add isnan
This commit is contained in:
parent
385f0af17e
commit
59dc0d1423
4
lib.nas
4
lib.nas
|
@ -138,7 +138,9 @@ var math=
|
||||||
exp: func(x) {return __builtin_exp(x); },
|
exp: func(x) {return __builtin_exp(x); },
|
||||||
ln: func(x) {return __builtin_ln(x); },
|
ln: func(x) {return __builtin_ln(x); },
|
||||||
sqrt: func(x) {return __builtin_sqrt(x); },
|
sqrt: func(x) {return __builtin_sqrt(x); },
|
||||||
atan2: func(x,y){return __builtin_atan2(x,y);}
|
atan2: func(x,y){return __builtin_atan2(x,y);},
|
||||||
|
nan: func() {return 1/0-1/0; },
|
||||||
|
isnan: func(x) {return __builtin_isnan(x); }
|
||||||
};
|
};
|
||||||
|
|
||||||
var D2R=math.pi/180;
|
var D2R=math.pi/180;
|
1
nasal.h
1
nasal.h
|
@ -15,7 +15,6 @@
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <thread>
|
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <stack>
|
#include <stack>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
|
@ -40,6 +40,7 @@ nasal_ref builtin_exp(std::vector<nasal_ref>&,nasal_gc&);
|
||||||
nasal_ref builtin_ln(std::vector<nasal_ref>&,nasal_gc&);
|
nasal_ref builtin_ln(std::vector<nasal_ref>&,nasal_gc&);
|
||||||
nasal_ref builtin_sqrt(std::vector<nasal_ref>&,nasal_gc&);
|
nasal_ref builtin_sqrt(std::vector<nasal_ref>&,nasal_gc&);
|
||||||
nasal_ref builtin_atan2(std::vector<nasal_ref>&,nasal_gc&);
|
nasal_ref builtin_atan2(std::vector<nasal_ref>&,nasal_gc&);
|
||||||
|
nasal_ref builtin_isnan(std::vector<nasal_ref>&,nasal_gc&);
|
||||||
nasal_ref builtin_time(std::vector<nasal_ref>&,nasal_gc&);
|
nasal_ref builtin_time(std::vector<nasal_ref>&,nasal_gc&);
|
||||||
nasal_ref builtin_contains(std::vector<nasal_ref>&,nasal_gc&);
|
nasal_ref builtin_contains(std::vector<nasal_ref>&,nasal_gc&);
|
||||||
nasal_ref builtin_delete(std::vector<nasal_ref>&,nasal_gc&);
|
nasal_ref builtin_delete(std::vector<nasal_ref>&,nasal_gc&);
|
||||||
|
@ -92,6 +93,7 @@ struct FUNC_TABLE
|
||||||
{"__builtin_ln", builtin_ln },
|
{"__builtin_ln", builtin_ln },
|
||||||
{"__builtin_sqrt", builtin_sqrt },
|
{"__builtin_sqrt", builtin_sqrt },
|
||||||
{"__builtin_atan2", builtin_atan2 },
|
{"__builtin_atan2", builtin_atan2 },
|
||||||
|
{"__builtin_isnan", builtin_isnan },
|
||||||
{"__builtin_time", builtin_time },
|
{"__builtin_time", builtin_time },
|
||||||
{"__builtin_contains",builtin_contains},
|
{"__builtin_contains",builtin_contains},
|
||||||
{"__builtin_delete", builtin_delete },
|
{"__builtin_delete", builtin_delete },
|
||||||
|
@ -596,6 +598,13 @@ nasal_ref builtin_atan2(std::vector<nasal_ref>& local_scope,nasal_gc& gc)
|
||||||
ret_addr->ptr.num=atan2(y_val_addr->ptr.num,x_val_addr->ptr.num);
|
ret_addr->ptr.num=atan2(y_val_addr->ptr.num,x_val_addr->ptr.num);
|
||||||
return ret_addr;
|
return ret_addr;
|
||||||
}
|
}
|
||||||
|
nasal_ref builtin_isnan(std::vector<nasal_ref>& local_scope,nasal_gc& gc)
|
||||||
|
{
|
||||||
|
nasal_ref x=local_scope[1];
|
||||||
|
if(x->type==vm_num && std::isnan(x->ptr.num))
|
||||||
|
return gc.one_addr;
|
||||||
|
return gc.zero_addr;
|
||||||
|
}
|
||||||
nasal_ref builtin_time(std::vector<nasal_ref>& local_scope,nasal_gc& gc)
|
nasal_ref builtin_time(std::vector<nasal_ref>& local_scope,nasal_gc& gc)
|
||||||
{
|
{
|
||||||
nasal_ref val_addr=local_scope[1];
|
nasal_ref val_addr=local_scope[1];
|
||||||
|
|
|
@ -138,7 +138,9 @@ var math=
|
||||||
exp: func(x) {return __builtin_exp(x); },
|
exp: func(x) {return __builtin_exp(x); },
|
||||||
ln: func(x) {return __builtin_ln(x); },
|
ln: func(x) {return __builtin_ln(x); },
|
||||||
sqrt: func(x) {return __builtin_sqrt(x); },
|
sqrt: func(x) {return __builtin_sqrt(x); },
|
||||||
atan2: func(x,y){return __builtin_atan2(x,y);}
|
atan2: func(x,y){return __builtin_atan2(x,y);},
|
||||||
|
nan: func() {return 1/0-1/0; },
|
||||||
|
isnan: func(x) {return __builtin_isnan(x); }
|
||||||
};
|
};
|
||||||
|
|
||||||
var D2R=math.pi/180;
|
var D2R=math.pi/180;
|
|
@ -48,7 +48,7 @@ var lexer=func(file)
|
||||||
elsif(c=='r' ) str~='\r';
|
elsif(c=='r' ) str~='\r';
|
||||||
elsif(c=='t' ) str~='\t';
|
elsif(c=='t' ) str~='\t';
|
||||||
elsif(c=='v' ) str~='\v';
|
elsif(c=='v' ) str~='\v';
|
||||||
elsif(c=='?' ) str~='?';
|
elsif(c=='?' ) str~='\?';
|
||||||
elsif(c=='0' ) str~='\0';
|
elsif(c=='0' ) str~='\0';
|
||||||
elsif(c=='\\') str~='\\';
|
elsif(c=='\\') str~='\\';
|
||||||
elsif(c=='\'') str~='\'';
|
elsif(c=='\'') str~='\'';
|
||||||
|
|
Loading…
Reference in New Issue