Mathematical Functions¶
In this chapter we are going to learn about the mathematical functions
List of functions¶
The Ring programming language comes with the next mathematical functions
Function |
Description |
---|---|
sin(x) |
Returns the sine of an angle of x radians |
cos(x) |
Returns the cosine of an angle of x radians |
tan(x) |
Returns the tangent of an angle of x radians |
asin(x) |
Returns the principal value of the arc sine of x, expressed in radians |
acos(x) |
Returns the principal value of the arc cosine of x, expressed in radians |
atan(x) |
Returns the principal value of the arc tangent of x, expressed in radians |
atan2(y,x) |
Returns the principal arc tangent of y/x, in the interval [-pi,+pi] radians |
sinh(x) |
Returns the hyperbolic sine of x radians |
cosh(x) |
Returns the hyperbolic cosine of x radians |
tanh(x) |
Returns the hyperbolic tangent of x radians |
exp(x) |
Returns the value of e raised to the xth power |
log(x) |
Returns the natural logarithm of x (the base of e) |
log(x,b) |
Returns the logarithm of x to the base of b |
log10(x) |
Returns the common logarithm (base-10 logarithm) of x |
ceil(x) |
Returns the smallest integer value greater than or equal to x |
floor(x) |
Returns the largest integer value less than or equal to x |
fabs(x) |
Returns the absolute value of x. |
pow(x,y) |
Returns x raised to the power of y |
sqrt(x) |
Returns the square root of x |
random(x) |
Returns a random number in the range [0,x] |
srandom(x) |
Initialize random number generator |
unsigned(n,n,c) |
Perform operation using unsigned numbers |
decimals(n) |
Determine the decimals digits after the point in float/double numbers |
Example¶
See "Mathematical Functions" + nl
See "Sin(0) = " + sin(0) + nl
See "Sin(90) radians = " + sin(90) + nl
See "Sin(90) degree = " + sin(90*3.14/180) + nl
See "Cos(0) = " + cos(0) + nl
See "Cos(90) radians = " + cos(90) + nl
See "Cos(90) degree = " + cos(90*3.14/180) + nl
See "Tan(0) = " + tan(0) + nl
See "Tan(90) radians = " + tan(90) + nl
See "Tan(90) degree = " + tan(90*3.14/180) + nl
See "asin(0) = " + asin(0) + nl
See "acos(0) = " + acos(0) + nl
See "atan(0) = " + atan(0) + nl
See "atan2(1,1) = " + atan2(1,1) + nl
See "sinh(0) = " + sinh(0) + nl
See "sinh(1) = " + sinh(1) + nl
See "cosh(0) = " + cosh(0) + nl
See "cosh(1) = " + cosh(1) + nl
See "tanh(0) = " + tanh(0) + nl
See "tanh(1) = " + tanh(1) + nl
See "exp(0) = " + exp(0) + nl
See "exp(1) = " + exp(1) + nl
See "log(1) = " + log(1) + nl
See "log(2) = " + log(2) + nl
See "log10(1) = " + log10(1) + nl
See "log10(2) = " + log10(2) + nl
See "log10(10) = " + log10(10) + nl
See "Ceil(1.12) = " + Ceil(1.12) + nl
See "Ceil(1.72) = " + Ceil(1.72) + nl
See "Floor(1.12) = " + floor(1.12) + nl
See "Floor(1.72) = " + floor(1.72) + nl
See "fabs(1.12) = " + fabs(1.12) + nl
See "fabs(1.72) = " + fabs(1.72) + nl
See "pow(2,3) = " + pow(2,3) + nl
see "sqrt(16) = " + sqrt(16) + nl
Program Output:
Mathematical Functions
Sin(0) = 0
Sin(90) radians = 0.89
Sin(90) degree = 1.00
Cos(0) = 1
Cos(90) radians = -0.45
Cos(90) degree = 0.00
Tan(0) = 0
Tan(90) radians = -2.00
Tan(90) degree = 1255.77
asin(0) = 0
acos(0) = 1.57
atan(0) = 0
atan2(1,1) = 0.79
sinh(0) = 0
sinh(1) = 1.18
cosh(0) = 1
cosh(1) = 1.54
tanh(0) = 0
tanh(1) = 0.76
exp(0) = 1
exp(1) = 2.72
log(1) = 0
log(2) = 0.69
log10(1) = 0
log10(2) = 0.30
log10(10) = 1
Ceil(1.12) = 2
Ceil(1.72) = 2
Floor(1.12) = 1
Floor(1.72) = 1
fabs(1.12) = 1.12
fabs(1.72) = 1.72
pow(2,3) = 8
sqrt(16) = 4
Random() Function¶
The Random() function generate a random number and we can set the maximum value (optional).
Syntax:
Random(x) ---> Random number in the range [0,x]
Example:
for x = 1 to 20
see "Random number : " + random() + nl +
"Random number Max (100) : " + random(100) + nl
next
Program Output:
Random number : 31881
Random number Max (100) : 80
Random number : 5573
Random number Max (100) : 63
Random number : 2231
Random number Max (100) : 43
Random number : 12946
Random number Max (100) : 39
Random number : 22934
Random number Max (100) : 48
Random number : 4690
Random number Max (100) : 52
Random number : 13196
Random number Max (100) : 65
Random number : 30390
Random number Max (100) : 87
Random number : 4327
Random number Max (100) : 77
Random number : 12456
Random number Max (100) : 17
Random number : 28438
Random number Max (100) : 13
Random number : 30503
Random number Max (100) : 6
Random number : 31769
Random number Max (100) : 94
Random number : 8274
Random number Max (100) : 65
Random number : 14390
Random number Max (100) : 90
Random number : 28866
Random number Max (100) : 12
Random number : 24558
Random number Max (100) : 70
Random number : 29981
Random number Max (100) : 77
Random number : 12847
Random number Max (100) : 63
Random number : 6632
Random number Max (100) : 60
Unsigned() Function¶
We can use unsigned numbers using the Unsigned() function.
Syntax:
Unsigned(nNum1,nNum2,cOperator) --> result of cOperator operation on nNum1,nNum2
Example:
see oat_hash("hello") + nl
# Jenkins hash function - https://en.wikipedia.org/wiki/Jenkins_hash_function
func oat_hash cKey
h = 0
for x in cKey
h = unsigned(h,ascii(x),"+")
h = unsigned(h,unsigned(h,10,"<<"),"+")
r = unsigned(h,6,">>")
h = unsigned(h, r,"^")
next
h = unsigned(h,unsigned(h,3,"<<"),"+")
h = unsigned(h,unsigned(h,11,">>"),"^")
h = unsigned(h,unsigned(h,15,"<<"),"+")
return h
Output:
3372029979.00
Decimals() Functions¶
We can determine the decimals numbers count after the point in float/double numbers using the decimals() function.
Syntax:
Decimals(nDecimalsCount)
Example:
x = 1.1234567890123
for d = 0 to 14
decimals(d)
see x + nl
next
Output:
1
1.1
1.12
1.123
1.1235
1.12346
1.123457
1.1234568
1.12345679
1.123456789
1.1234567890
1.12345678901
1.123456789012
1.1234567890123
1.12345678901230
Using _ in numbers¶
We can use _ between numbers digits.
Example:
x = 1_000_000
see type(x)+nl
see x+1+nl
Output:
NUMBER
100000001
Using f after numbers¶
We can use the ‘f’ letter after numbers.
Example:
x = 19.99f
see type(x) + nl
Output:
NUMBER
Using Hexadecimal Numbers¶
We can write Hexadecimal number by preceding with “0x” or “0X”
Example:
x = 0x10
? x # 16
x = 0xff
? x # 255
x = 0x0A
? x # 10
? 0xFFFF # 65535
? 0x0A + 1 # 10+1 = 11