Mercurial > repos > rhope
comparison number.c @ 3:94c885692eb5
Partial set of fixes and enhancements from Linux box
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 29 Apr 2009 03:21:23 -0400 |
parents | 76568becd6d6 |
children | 429b5f441381 |
comparison
equal
deleted
inserted
replaced
2:73e978d590c7 | 3:94c885692eb5 |
---|---|
1 #include <math.h> | |
1 #include <stdlib.h> | 2 #include <stdlib.h> |
2 #include "datum.h" | 3 #include "datum.h" |
3 #include "structs.h" | 4 #include "structs.h" |
4 #ifdef SEGA | 5 #ifdef SEGA |
5 long atol(const char * string) | 6 long atol(const char * string) |
257 ++i; | 258 ++i; |
258 } | 259 } |
259 if(string[i] != '\0') | 260 if(string[i] != '\0') |
260 { | 261 { |
261 ++i; | 262 ++i; |
262 while(string[i] != '\0' && string[i] >= 0 && string[i] <= 9) | 263 while(string[i] != '\0' && string[i] >= '0' && string[i] <= '9') |
263 { | 264 { |
264 value += ((double)(string[i] - '0'))/divisor; | 265 value += ((double)(string[i] - '0'))/divisor; |
265 divisor *= 10; | 266 divisor *= 10; |
266 } | 267 ++i; |
267 } | 268 } |
269 } | |
270 if(neg_flag) | |
271 value = 0.0-value; | |
268 return value; | 272 return value; |
269 } | 273 } |
270 #endif | 274 #endif |
271 | 275 |
272 int vis_stringtoreal(datum ** inputlist, queue_entry * worker_entry) | 276 int vis_stringtoreal(datum ** inputlist, queue_entry * worker_entry) |
346 inputlist[0]->c.real /= inputlist[1]->c.real; | 350 inputlist[0]->c.real /= inputlist[1]->c.real; |
347 release_ref(inputlist[1]); | 351 release_ref(inputlist[1]); |
348 return 0; | 352 return 0; |
349 } | 353 } |
350 | 354 |
355 int vis_real_mult(datum ** inputlist, queue_entry * worker_entry) | |
356 { | |
357 inputlist[0] = copy_datum(inputlist[0], 0); | |
358 inputlist[0]->c.real *= inputlist[1]->c.real; | |
359 release_ref(inputlist[1]); | |
360 return 0; | |
361 } | |
362 #define PI 3.14159265 | |
363 int vis_real_cos(datum ** inputlist, queue_entry * worker_entry) | |
364 { | |
365 inputlist[0] = copy_datum(inputlist[0], 0); | |
366 inputlist[0]->c.real = cos(inputlist[0]->c.real * PI/180.0); | |
367 return 0; | |
368 } | |
369 | |
370 int vis_real_sin(datum ** inputlist, queue_entry * worker_entry) | |
371 { | |
372 inputlist[0] = copy_datum(inputlist[0], 0); | |
373 inputlist[0]->c.real = sin(inputlist[0]->c.real * PI/180.0); | |
374 return 0; | |
375 } | |
376 | |
377 int vis_real_tan(datum ** inputlist, queue_entry * worker_entry) | |
378 { | |
379 inputlist[0] = copy_datum(inputlist[0], 0); | |
380 inputlist[0]->c.real = tan(inputlist[0]->c.real * PI/180.0); | |
381 return 0; | |
382 } | |
383 | |
384 int vis_real_arccos(datum ** inputlist, queue_entry * worker_entry) | |
385 { | |
386 inputlist[0] = copy_datum(inputlist[0], 0); | |
387 inputlist[0]->c.real = acos(inputlist[0]->c.real)*180.0/PI; | |
388 return 0; | |
389 } | |
390 | |
391 int vis_real_arcsin(datum ** inputlist, queue_entry * worker_entry) | |
392 { | |
393 inputlist[0] = copy_datum(inputlist[0], 0); | |
394 inputlist[0]->c.real = asin(inputlist[0]->c.real)*180.0/PI; | |
395 return 0; | |
396 } | |
397 | |
398 int vis_real_arctan(datum ** inputlist, queue_entry * worker_entry) | |
399 { | |
400 inputlist[0] = copy_datum(inputlist[0], 0); | |
401 inputlist[0]->c.real = atan(inputlist[0]->c.real)*180.0/PI; | |
402 return 0; | |
403 } | |
404 | |
405 int vis_real_exp(datum ** inputlist, queue_entry * worker_entry) | |
406 { | |
407 inputlist[0] = copy_datum(inputlist[0], 0); | |
408 inputlist[0]->c.real = pow(inputlist[0]->c.real, inputlist[1]->c.real); | |
409 release_ref(inputlist[1]); | |
410 return 0; | |
411 } | |
412 | |
413 int vis_real_sqrt(datum ** inputlist, queue_entry * worker_entry) | |
414 { | |
415 inputlist[0] = copy_datum(inputlist[0], 0); | |
416 inputlist[0]->c.real = sqrt(inputlist[0]->c.real); | |
417 return 0; | |
418 } | |
419 | |
420 int vis_whole_fromreal(datum ** inputlist, queue_entry * worker_entry) | |
421 { | |
422 datum * output = new_datum(BUILTIN_TYPE_WHOLE, 2, 0, worker_entry->instance->def->program); | |
423 output->c.integers.num_a = inputlist[0]->c.real; | |
424 release_ref(inputlist[0]); | |
425 inputlist[0] = output; | |
426 return 0; | |
427 } |