411 REFERENCE · Wikibooks
Scheme Programming/Further Maths
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
Scheme Programming Simple Maths Further Maths List Operations
Trigonometric Functions
Scheme always uses radians for its internal representation of angles, so its sine, cosine, tangent, arcsine, arccosine, and arctangent functions operate as such:
> (sin 0)
0.0
> (cos 0)
1.0
> (tan 0)
0.0
> (asin 1)
1.5707963267948965
> (acos 0)
1.5707963267948965
> (atan 1)
0.7853981633974483
Hyperbolic Functions
Scheme provides a number of hyperbolic functions, such as hyperbolic sine, cosine, tangent and their inverses.
> (sinh 0)
0.0
> (cosh 0)
1.0
> (tanh 1)
0.7615941559557649
> (asinh 0)
0.0
> (acosh 1)
0.0
> (atanh 0)
0.0
Power Functions
Raising a base to a power
Scheme provides the expt function to raise a base to an exponent.
> (expt 2 10)
1024
Finding the square root of a number
Scheme provides a sqrt function for finding the square root of a number.
> (sqrt 2)
1.4142135623730951
> (expt 2 0.5)
1.4142135623730951
Exponential and logarithmic functions
Exponential
Scheme provides a exp function for raising base to a power:
> (exp 2)
7.3890560989306504
Logarithm
Scheme provides a log function for finding the natural logarithm of a number:
> (log 7.389056)
1.999999986611192
Note that there is no built-in procedure for finding any other base logarithm other than base .
Instead, you can type
> (define logB
(lambda (x B)
(/ (log x) (log B))))
Other useful maths functions (rounding, modulo, gcd, etc.)
Rounding functions
Scheme provides a set of functions for rounding a real number up, down or to the nearest integer:
(floor x) - This returns the largest integer that is no larger than x.
(ceiling x) - This returns the smallest integer that is no smaller than x.
(truncate x) - This returns the integer value closest to x that is no larger than the absolute value of x.
(round x) - This rounds value of x to the nearest integer as is usual in mathematics. It even works when halfway between values.
(abs x) - This returns the absolute value of x.
Number theoretic division
In order to perform mathematically exact divisions and accomplish tasks for number theorists, Scheme provides a small number of division specific functions:
(remainder x y) - Calculates the remainder of dividing y into x (that is, the remainder of x/y):
> (remainder 5 4)
1
> (remainder -5 4)
-1
> (remainder 5 -4)
1
> (remainder -5 -4)
-1
> (remainder x y)
error
> (remainder 2 1)
0
(modulo x y) - Calculates the modulo of x and y.
> (modulo 5 4)
1
> (modulo -5 4)
3
> (modulo 5 -4)
-3
> (modulo -5 -4)
-1
There is clearly a difference between modulo and remainder, one of them not shown here is that remainder is the only one which will return an inexact value, and can take inexact arguments.