Added various geom functions to runtime including asin, acos, tan

This commit is contained in:
Abdulaziz Ghuloum 2007-09-02 20:53:28 -04:00
parent d785d40935
commit 38a60b4d84
3 changed files with 62 additions and 15 deletions

Binary file not shown.

View File

@ -77,6 +77,40 @@ ikrt_fl_cos(ikp x, ikpcb* pcb){
return r; return r;
} }
ikp
ikrt_fl_tan(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = tan(flonum_data(x));
return r;
}
ikp
ikrt_fl_asin(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = asin(flonum_data(x));
return r;
}
ikp
ikrt_fl_acos(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = acos(flonum_data(x));
return r;
}
ikp
ikrt_fl_atan(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = atan(flonum_data(x));
return r;
}
ikp ikp
ikrt_fl_sqrt(ikp x, ikpcb* pcb){ ikrt_fl_sqrt(ikp x, ikpcb* pcb){
@ -95,18 +129,6 @@ ikrt_fl_log(ikp x, ikpcb* pcb){
} }
ikp
ikrt_fl_atan(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = atan(flonum_data(x));
return r;
}
ikp ikp
ikrt_fx_sin(ikp x, ikpcb* pcb){ ikrt_fx_sin(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag; ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
@ -124,10 +146,26 @@ ikrt_fx_cos(ikp x, ikpcb* pcb){
} }
ikp ikp
ikrt_fx_sqrt(ikp x, ikpcb* pcb){ ikrt_fx_tan(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag; ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag; ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = sqrt(unfix(x)); flonum_data(r) = tan(unfix(x));
return r;
}
ikp
ikrt_fx_asin(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = asin(unfix(x));
return r;
}
ikp
ikrt_fx_acos(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = acos(unfix(x));
return r; return r;
} }
@ -139,6 +177,15 @@ ikrt_fx_atan(ikp x, ikpcb* pcb){
return r; return r;
} }
ikp
ikrt_fx_sqrt(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag;
ref(r, -vector_tag) = (ikp)flonum_tag;
flonum_data(r) = sqrt(unfix(x));
return r;
}
ikp ikp
ikrt_fx_log(ikp x, ikpcb* pcb){ ikrt_fx_log(ikp x, ikpcb* pcb){
ikp r = ik_alloc(pcb, flonum_size) + vector_tag; ikp r = ik_alloc(pcb, flonum_size) + vector_tag;

View File

@ -86,7 +86,7 @@
[asin S ba se] [asin S ba se]
[assert C ba] [assert C ba]
[assertion-violation S ba] [assertion-violation S ba]
[atan S ba se] [atan C ba se]
[boolean=? C ba] [boolean=? C ba]
[boolean? C ba se] [boolean? C ba se]
[car C ba se] [car C ba se]