TinyJS

Dependencies:   mbed

Fork of TinyJS by Takehisa Oneta

Committer:
va009039
Date:
Wed Sep 10 08:41:53 2014 +0000
Revision:
9:f80cf055f03d
Parent:
0:aae260bdcdd9
for GAE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ohneta 0:aae260bdcdd9 1 /*
ohneta 0:aae260bdcdd9 2 * TinyJS
ohneta 0:aae260bdcdd9 3 *
ohneta 0:aae260bdcdd9 4 * A single-file Javascript-alike engine
ohneta 0:aae260bdcdd9 5 *
ohneta 0:aae260bdcdd9 6 * - Math and Trigonometry functions
ohneta 0:aae260bdcdd9 7 *
ohneta 0:aae260bdcdd9 8 * Authored By O.Z.L.B. <ozlbinfo@gmail.com>
ohneta 0:aae260bdcdd9 9 *
ohneta 0:aae260bdcdd9 10 * Copyright (C) 2011 O.Z.L.B.
ohneta 0:aae260bdcdd9 11 *
ohneta 0:aae260bdcdd9 12 * Permission is hereby granted, free of charge, to any person obtaining a copy of
ohneta 0:aae260bdcdd9 13 * this software and associated documentation files (the "Software"), to deal in
ohneta 0:aae260bdcdd9 14 * the Software without restriction, including without limitation the rights to
ohneta 0:aae260bdcdd9 15 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
ohneta 0:aae260bdcdd9 16 * of the Software, and to permit persons to whom the Software is furnished to do
ohneta 0:aae260bdcdd9 17 * so, subject to the following conditions:
ohneta 0:aae260bdcdd9 18
ohneta 0:aae260bdcdd9 19 * The above copyright notice and this permission notice shall be included in all
ohneta 0:aae260bdcdd9 20 * copies or substantial portions of the Software.
ohneta 0:aae260bdcdd9 21
ohneta 0:aae260bdcdd9 22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
ohneta 0:aae260bdcdd9 23 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
ohneta 0:aae260bdcdd9 24 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
ohneta 0:aae260bdcdd9 25 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
ohneta 0:aae260bdcdd9 26 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
ohneta 0:aae260bdcdd9 27 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
ohneta 0:aae260bdcdd9 28 * SOFTWARE.
ohneta 0:aae260bdcdd9 29 */
ohneta 0:aae260bdcdd9 30
ohneta 0:aae260bdcdd9 31 #include <math.h>
ohneta 0:aae260bdcdd9 32 #include <cstdlib>
ohneta 0:aae260bdcdd9 33 #include <sstream>
ohneta 0:aae260bdcdd9 34 #include "TinyJS_MathFunctions.h"
ohneta 0:aae260bdcdd9 35
ohneta 0:aae260bdcdd9 36 using namespace std;
ohneta 0:aae260bdcdd9 37
ohneta 0:aae260bdcdd9 38 #define k_E exp(1.0)
ohneta 0:aae260bdcdd9 39 #define k_PI 3.1415926535897932384626433832795
ohneta 0:aae260bdcdd9 40
ohneta 0:aae260bdcdd9 41 #define F_ABS(a) ((a)>=0 ? (a) : (-(a)))
ohneta 0:aae260bdcdd9 42 #define F_MIN(a,b) ((a)>(b) ? (b) : (a))
ohneta 0:aae260bdcdd9 43 #define F_MAX(a,b) ((a)>(b) ? (a) : (b))
ohneta 0:aae260bdcdd9 44 #define F_SGN(a) ((a)>0 ? 1 : ((a)<0 ? -1 : 0 ))
ohneta 0:aae260bdcdd9 45 #define F_RNG(a,min,max) ((a)<(min) ? min : ((a)>(max) ? max : a ))
ohneta 0:aae260bdcdd9 46 #define F_ROUND(a) ((a)>0 ? (int) ((a)+0.5) : (int) ((a)-0.5) )
ohneta 0:aae260bdcdd9 47
ohneta 0:aae260bdcdd9 48 //CScriptVar shortcut macro
ohneta 0:aae260bdcdd9 49 #define scIsInt(a) ( c->getParameter(a)->isInt() )
ohneta 0:aae260bdcdd9 50 #define scIsDouble(a) ( c->getParameter(a)->isDouble() )
ohneta 0:aae260bdcdd9 51 #define scGetInt(a) ( c->getParameter(a)->getInt() )
ohneta 0:aae260bdcdd9 52 #define scGetDouble(a) ( c->getParameter(a)->getDouble() )
ohneta 0:aae260bdcdd9 53 #define scReturnInt(a) ( c->getReturnVar()->setInt(a) )
ohneta 0:aae260bdcdd9 54 #define scReturnDouble(a) ( c->getReturnVar()->setDouble(a) )
ohneta 0:aae260bdcdd9 55
ohneta 0:aae260bdcdd9 56 #ifdef _MSC_VER
ohneta 0:aae260bdcdd9 57 namespace
ohneta 0:aae260bdcdd9 58 {
ohneta 0:aae260bdcdd9 59 double asinh( const double &value )
ohneta 0:aae260bdcdd9 60 {
ohneta 0:aae260bdcdd9 61 double returned;
ohneta 0:aae260bdcdd9 62
ohneta 0:aae260bdcdd9 63 if(value>0)
ohneta 0:aae260bdcdd9 64 returned = log(value + sqrt(value * value + 1));
ohneta 0:aae260bdcdd9 65 else
ohneta 0:aae260bdcdd9 66 returned = -log(-value + sqrt(value * value + 1));
ohneta 0:aae260bdcdd9 67
ohneta 0:aae260bdcdd9 68 return(returned);
ohneta 0:aae260bdcdd9 69 }
ohneta 0:aae260bdcdd9 70
ohneta 0:aae260bdcdd9 71 double acosh( const double &value )
ohneta 0:aae260bdcdd9 72 {
ohneta 0:aae260bdcdd9 73 double returned;
ohneta 0:aae260bdcdd9 74
ohneta 0:aae260bdcdd9 75 if(value>0)
ohneta 0:aae260bdcdd9 76 returned = log(value + sqrt(value * value - 1));
ohneta 0:aae260bdcdd9 77 else
ohneta 0:aae260bdcdd9 78 returned = -log(-value + sqrt(value * value - 1));
ohneta 0:aae260bdcdd9 79
ohneta 0:aae260bdcdd9 80 return(returned);
ohneta 0:aae260bdcdd9 81 }
ohneta 0:aae260bdcdd9 82 }
ohneta 0:aae260bdcdd9 83 #endif
ohneta 0:aae260bdcdd9 84
ohneta 0:aae260bdcdd9 85 //Math.abs(x) - returns absolute of given value
ohneta 0:aae260bdcdd9 86 void scMathAbs(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 87 if ( scIsInt("a") ) {
ohneta 0:aae260bdcdd9 88 scReturnInt( F_ABS( scGetInt("a") ) );
ohneta 0:aae260bdcdd9 89 } else if ( scIsDouble("a") ) {
ohneta 0:aae260bdcdd9 90 scReturnDouble( F_ABS( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 91 }
ohneta 0:aae260bdcdd9 92 }
ohneta 0:aae260bdcdd9 93
ohneta 0:aae260bdcdd9 94 //Math.round(a) - returns nearest round of given value
ohneta 0:aae260bdcdd9 95 void scMathRound(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 96 if ( scIsInt("a") ) {
ohneta 0:aae260bdcdd9 97 scReturnInt( F_ROUND( scGetInt("a") ) );
ohneta 0:aae260bdcdd9 98 } else if ( scIsDouble("a") ) {
ohneta 0:aae260bdcdd9 99 scReturnDouble( F_ROUND( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 100 }
ohneta 0:aae260bdcdd9 101 }
ohneta 0:aae260bdcdd9 102
ohneta 0:aae260bdcdd9 103 //Math.min(a,b) - returns minimum of two given values
ohneta 0:aae260bdcdd9 104 void scMathMin(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 105 if ( (scIsInt("a")) && (scIsInt("b")) ) {
ohneta 0:aae260bdcdd9 106 scReturnInt( F_MIN( scGetInt("a"), scGetInt("b") ) );
ohneta 0:aae260bdcdd9 107 } else {
ohneta 0:aae260bdcdd9 108 scReturnDouble( F_MIN( scGetDouble("a"), scGetDouble("b") ) );
ohneta 0:aae260bdcdd9 109 }
ohneta 0:aae260bdcdd9 110 }
ohneta 0:aae260bdcdd9 111
ohneta 0:aae260bdcdd9 112 //Math.max(a,b) - returns maximum of two given values
ohneta 0:aae260bdcdd9 113 void scMathMax(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 114 if ( (scIsInt("a")) && (scIsInt("b")) ) {
ohneta 0:aae260bdcdd9 115 scReturnInt( F_MAX( scGetInt("a"), scGetInt("b") ) );
ohneta 0:aae260bdcdd9 116 } else {
ohneta 0:aae260bdcdd9 117 scReturnDouble( F_MAX( scGetDouble("a"), scGetDouble("b") ) );
ohneta 0:aae260bdcdd9 118 }
ohneta 0:aae260bdcdd9 119 }
ohneta 0:aae260bdcdd9 120
ohneta 0:aae260bdcdd9 121 //Math.range(x,a,b) - returns value limited between two given values
ohneta 0:aae260bdcdd9 122 void scMathRange(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 123 if ( (scIsInt("x")) ) {
ohneta 0:aae260bdcdd9 124 scReturnInt( F_RNG( scGetInt("x"), scGetInt("a"), scGetInt("b") ) );
ohneta 0:aae260bdcdd9 125 } else {
ohneta 0:aae260bdcdd9 126 scReturnDouble( F_RNG( scGetDouble("x"), scGetDouble("a"), scGetDouble("b") ) );
ohneta 0:aae260bdcdd9 127 }
ohneta 0:aae260bdcdd9 128 }
ohneta 0:aae260bdcdd9 129
ohneta 0:aae260bdcdd9 130 //Math.sign(a) - returns sign of given value (-1==negative,0=zero,1=positive)
ohneta 0:aae260bdcdd9 131 void scMathSign(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 132 if ( scIsInt("a") ) {
ohneta 0:aae260bdcdd9 133 scReturnInt( F_SGN( scGetInt("a") ) );
ohneta 0:aae260bdcdd9 134 } else if ( scIsDouble("a") ) {
ohneta 0:aae260bdcdd9 135 scReturnDouble( F_SGN( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 136 }
ohneta 0:aae260bdcdd9 137 }
ohneta 0:aae260bdcdd9 138
ohneta 0:aae260bdcdd9 139 //Math.PI() - returns PI value
ohneta 0:aae260bdcdd9 140 void scMathPI(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 141 scReturnDouble(k_PI);
ohneta 0:aae260bdcdd9 142 }
ohneta 0:aae260bdcdd9 143
ohneta 0:aae260bdcdd9 144 //Math.toDegrees(a) - returns degree value of a given angle in radians
ohneta 0:aae260bdcdd9 145 void scMathToDegrees(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 146 scReturnDouble( (180.0/k_PI)*( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 147 }
ohneta 0:aae260bdcdd9 148
ohneta 0:aae260bdcdd9 149 //Math.toRadians(a) - returns radians value of a given angle in degrees
ohneta 0:aae260bdcdd9 150 void scMathToRadians(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 151 scReturnDouble( (k_PI/180.0)*( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 152 }
ohneta 0:aae260bdcdd9 153
ohneta 0:aae260bdcdd9 154 //Math.sin(a) - returns trig. sine of given angle in radians
ohneta 0:aae260bdcdd9 155 void scMathSin(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 156 scReturnDouble( sin( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 157 }
ohneta 0:aae260bdcdd9 158
ohneta 0:aae260bdcdd9 159 //Math.asin(a) - returns trig. arcsine of given angle in radians
ohneta 0:aae260bdcdd9 160 void scMathASin(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 161 scReturnDouble( asin( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 162 }
ohneta 0:aae260bdcdd9 163
ohneta 0:aae260bdcdd9 164 //Math.cos(a) - returns trig. cosine of given angle in radians
ohneta 0:aae260bdcdd9 165 void scMathCos(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 166 scReturnDouble( cos( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 167 }
ohneta 0:aae260bdcdd9 168
ohneta 0:aae260bdcdd9 169 //Math.acos(a) - returns trig. arccosine of given angle in radians
ohneta 0:aae260bdcdd9 170 void scMathACos(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 171 scReturnDouble( acos( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 172 }
ohneta 0:aae260bdcdd9 173
ohneta 0:aae260bdcdd9 174 //Math.tan(a) - returns trig. tangent of given angle in radians
ohneta 0:aae260bdcdd9 175 void scMathTan(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 176 scReturnDouble( tan( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 177 }
ohneta 0:aae260bdcdd9 178
ohneta 0:aae260bdcdd9 179 //Math.atan(a) - returns trig. arctangent of given angle in radians
ohneta 0:aae260bdcdd9 180 void scMathATan(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 181 scReturnDouble( atan( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 182 }
ohneta 0:aae260bdcdd9 183
ohneta 0:aae260bdcdd9 184 //Math.sinh(a) - returns trig. hyperbolic sine of given angle in radians
ohneta 0:aae260bdcdd9 185 void scMathSinh(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 186 scReturnDouble( sinh( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 187 }
ohneta 0:aae260bdcdd9 188
ohneta 0:aae260bdcdd9 189 //Math.asinh(a) - returns trig. hyperbolic arcsine of given angle in radians
ohneta 0:aae260bdcdd9 190 void scMathASinh(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 191 scReturnDouble( asinh( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 192 }
ohneta 0:aae260bdcdd9 193
ohneta 0:aae260bdcdd9 194 //Math.cosh(a) - returns trig. hyperbolic cosine of given angle in radians
ohneta 0:aae260bdcdd9 195 void scMathCosh(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 196 scReturnDouble( cosh( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 197 }
ohneta 0:aae260bdcdd9 198
ohneta 0:aae260bdcdd9 199 //Math.acosh(a) - returns trig. hyperbolic arccosine of given angle in radians
ohneta 0:aae260bdcdd9 200 void scMathACosh(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 201 scReturnDouble( acosh( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 202 }
ohneta 0:aae260bdcdd9 203
ohneta 0:aae260bdcdd9 204 //Math.tanh(a) - returns trig. hyperbolic tangent of given angle in radians
ohneta 0:aae260bdcdd9 205 void scMathTanh(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 206 scReturnDouble( tanh( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 207 }
ohneta 0:aae260bdcdd9 208
ohneta 0:aae260bdcdd9 209 //Math.atan(a) - returns trig. hyperbolic arctangent of given angle in radians
ohneta 0:aae260bdcdd9 210 void scMathATanh(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 211 scReturnDouble( atan( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 212 }
ohneta 0:aae260bdcdd9 213
ohneta 0:aae260bdcdd9 214 //Math.E() - returns E Neplero value
ohneta 0:aae260bdcdd9 215 void scMathE(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 216 scReturnDouble(k_E);
ohneta 0:aae260bdcdd9 217 }
ohneta 0:aae260bdcdd9 218
ohneta 0:aae260bdcdd9 219 //Math.log(a) - returns natural logaritm (base E) of given value
ohneta 0:aae260bdcdd9 220 void scMathLog(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 221 scReturnDouble( log( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 222 }
ohneta 0:aae260bdcdd9 223
ohneta 0:aae260bdcdd9 224 //Math.log10(a) - returns logaritm(base 10) of given value
ohneta 0:aae260bdcdd9 225 void scMathLog10(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 226 scReturnDouble( log10( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 227 }
ohneta 0:aae260bdcdd9 228
ohneta 0:aae260bdcdd9 229 //Math.exp(a) - returns e raised to the power of a given number
ohneta 0:aae260bdcdd9 230 void scMathExp(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 231 scReturnDouble( exp( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 232 }
ohneta 0:aae260bdcdd9 233
ohneta 0:aae260bdcdd9 234 //Math.pow(a,b) - returns the result of a number raised to a power (a)^(b)
ohneta 0:aae260bdcdd9 235 void scMathPow(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 236 scReturnDouble( pow( scGetDouble("a"), scGetDouble("b") ) );
ohneta 0:aae260bdcdd9 237 }
ohneta 0:aae260bdcdd9 238
ohneta 0:aae260bdcdd9 239 //Math.sqr(a) - returns square of given value
ohneta 0:aae260bdcdd9 240 void scMathSqr(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 241 scReturnDouble( ( scGetDouble("a") * scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 242 }
ohneta 0:aae260bdcdd9 243
ohneta 0:aae260bdcdd9 244 //Math.sqrt(a) - returns square root of given value
ohneta 0:aae260bdcdd9 245 void scMathSqrt(CScriptVar *c, void *userdata) {
ohneta 0:aae260bdcdd9 246 scReturnDouble( sqrtf( scGetDouble("a") ) );
ohneta 0:aae260bdcdd9 247 }
ohneta 0:aae260bdcdd9 248
ohneta 0:aae260bdcdd9 249 // ----------------------------------------------- Register Functions
ohneta 0:aae260bdcdd9 250 void registerMathFunctions(CTinyJS *tinyJS) {
ohneta 0:aae260bdcdd9 251
ohneta 0:aae260bdcdd9 252 // --- Math and Trigonometry functions ---
ohneta 0:aae260bdcdd9 253 tinyJS->addNative("function Math.abs(a)", scMathAbs, 0);
ohneta 0:aae260bdcdd9 254 tinyJS->addNative("function Math.round(a)", scMathRound, 0);
ohneta 0:aae260bdcdd9 255 tinyJS->addNative("function Math.min(a,b)", scMathMin, 0);
ohneta 0:aae260bdcdd9 256 tinyJS->addNative("function Math.max(a,b)", scMathMax, 0);
ohneta 0:aae260bdcdd9 257 tinyJS->addNative("function Math.range(x,a,b)", scMathRange, 0);
ohneta 0:aae260bdcdd9 258 tinyJS->addNative("function Math.sign(a)", scMathSign, 0);
ohneta 0:aae260bdcdd9 259
ohneta 0:aae260bdcdd9 260 tinyJS->addNative("function Math.PI()", scMathPI, 0);
ohneta 0:aae260bdcdd9 261 tinyJS->addNative("function Math.toDegrees(a)", scMathToDegrees, 0);
ohneta 0:aae260bdcdd9 262 tinyJS->addNative("function Math.toRadians(a)", scMathToRadians, 0);
ohneta 0:aae260bdcdd9 263 tinyJS->addNative("function Math.sin(a)", scMathSin, 0);
ohneta 0:aae260bdcdd9 264 tinyJS->addNative("function Math.asin(a)", scMathASin, 0);
ohneta 0:aae260bdcdd9 265 tinyJS->addNative("function Math.cos(a)", scMathCos, 0);
ohneta 0:aae260bdcdd9 266 tinyJS->addNative("function Math.acos(a)", scMathACos, 0);
ohneta 0:aae260bdcdd9 267 tinyJS->addNative("function Math.tan(a)", scMathTan, 0);
ohneta 0:aae260bdcdd9 268 tinyJS->addNative("function Math.atan(a)", scMathATan, 0);
ohneta 0:aae260bdcdd9 269 tinyJS->addNative("function Math.sinh(a)", scMathSinh, 0);
ohneta 0:aae260bdcdd9 270 tinyJS->addNative("function Math.asinh(a)", scMathASinh, 0);
ohneta 0:aae260bdcdd9 271 tinyJS->addNative("function Math.cosh(a)", scMathCosh, 0);
ohneta 0:aae260bdcdd9 272 tinyJS->addNative("function Math.acosh(a)", scMathACosh, 0);
ohneta 0:aae260bdcdd9 273 tinyJS->addNative("function Math.tanh(a)", scMathTanh, 0);
ohneta 0:aae260bdcdd9 274 tinyJS->addNative("function Math.atanh(a)", scMathATanh, 0);
ohneta 0:aae260bdcdd9 275
ohneta 0:aae260bdcdd9 276 tinyJS->addNative("function Math.E()", scMathE, 0);
ohneta 0:aae260bdcdd9 277 tinyJS->addNative("function Math.log(a)", scMathLog, 0);
ohneta 0:aae260bdcdd9 278 tinyJS->addNative("function Math.log10(a)", scMathLog10, 0);
ohneta 0:aae260bdcdd9 279 tinyJS->addNative("function Math.exp(a)", scMathExp, 0);
ohneta 0:aae260bdcdd9 280 tinyJS->addNative("function Math.pow(a,b)", scMathPow, 0);
ohneta 0:aae260bdcdd9 281
ohneta 0:aae260bdcdd9 282 tinyJS->addNative("function Math.sqr(a)", scMathSqr, 0);
ohneta 0:aae260bdcdd9 283 tinyJS->addNative("function Math.sqrt(a)", scMathSqrt, 0);
ohneta 0:aae260bdcdd9 284
ohneta 0:aae260bdcdd9 285 }
ohneta 0:aae260bdcdd9 286