# Math Time!

Alright everybody! Math time!

So today I tried to write a program which would print out, say, 1000
digits of pi. I figured I’d do this by assigning a… variable…
to be a bignum… crap, Ruby is duck typing! I mean, yay?

Ok, so to the point. How do I tell Ruby to print a value (.to_f) to a
certain number of integers? .to_f(1000)? And also, how do I write
tan, cos, sin, etc. in Ruby?

Thanks for the help,
math rulez
--------------------------------------------|
If you’re not living on the edge,
then you’re just wasting space.

On 5/1/07, Ari B. [email protected] wrote:

Alright everybody! Math time!

So today I tried to write a program which would print out, say, 1000
digits of pi. I figured I’d do this by assigning a… variable…
to be a bignum… crap, Ruby is duck typing! I mean, yay?

Ok, so to the point. How do I tell Ruby to print a value (.to_f) to a
certain number of integers? .to_f(1000)? And also, how do I write
tan, cos, sin, etc. in Ruby?

I havent done this with numbers but you could use:

number.to_s[0…1000]

If u can do that without the convertion it should be better, but if
not i hope my solution helps you.

About maths check the Ruby builins Math module:

http://www.rubycentral.com/book/ref_m_math.html

On May 1, 2007, at 7:22 PM, Ari B. wrote:

So today I tried to write a program which would print out, say,
1000 digits of pi.

ruby -rbigdecimal -rbigdecimal/math -e ‘include BigMath; digits =
1000; puts “3.”+BigDecimal.PI(digits).to_s[3,digits]’

Ok, so to the point. How do I tell Ruby to print a value (.to_f) to
a certain number of integers?

printf “%.20f”, flt

.to_f(1000)? And also, how do I write tan, cos, sin, etc. in Ruby?

Math.tan(num) # etc.

James Edward G. II

— Todd B. [email protected] wrote:

puts pi( 1000 )

Oops! I meant → puts pi( 1e1000 )

— James Edward G. II [email protected]
wrote:

James Edward G. II

Or you could do it the hard way (yes, reinventing the
wheel is one of my faults)

# are BigDecimals

def pi( precision )
(0…precision).inject(0) { |sum, i| i*=4; sum +
1.0/(i+1) - 1.0/(i+3) } * 4
end

puts pi( 1000 )

# cos() converges almost immediately

def fact( i )
return i == 0 ? 1 : fact( i - 1 ) * i
end

def cos( angle, precision )
(0…precision).inject(0) { |sum, i| i*=4; sum +
anglei/fact(i) - angle(i+2)/fact(i+2) }
end

puts cos( 1.0, 3 )

# 0.540302305868092

require ‘mathn’
puts Math::cos(1.0)