comparison liboctave/numeric/lo-mappers.cc @ 21231:5f318c8ec634

eliminate feature tests from lo-specfun.h * lo-specfun.h, lo-specfun.cc (xacosh, xasinh, xatanh, xerf, xerfc xexpm1, xlog1p, xcbrt): Rename to have 'x' prefix. Conditionally define in .cc file. Change all uses Move complex versions of acosh, asinh, and atanh functions here.
author John W. Eaton <jwe@octave.org>
date Tue, 09 Feb 2016 04:15:50 -0500
parents f7121e111991
children b8cf410b5c88
comparison
equal deleted inserted replaced
21230:721539013db4 21231:5f318c8ec634
193 193
194 return -i * log (x + i * sqrt (tmp)); 194 return -i * log (x + i * sqrt (tmp));
195 } 195 }
196 196
197 Complex 197 Complex
198 acosh (const Complex& x)
199 {
200 return log (x + sqrt (x + 1.0) * sqrt (x - 1.0));
201 }
202
203 Complex
204 asin (const Complex& x) 198 asin (const Complex& x)
205 { 199 {
206 static Complex i (0, 1); 200 static Complex i (0, 1);
207 201
208 Complex tmp; 202 Complex tmp;
220 214
221 return -i * log (i*x + sqrt (tmp)); 215 return -i * log (i*x + sqrt (tmp));
222 } 216 }
223 217
224 Complex 218 Complex
225 asinh (const Complex& x)
226 {
227 return log (x + sqrt (x*x + 1.0));
228 }
229
230 Complex
231 atan (const Complex& x) 219 atan (const Complex& x)
232 { 220 {
233 static Complex i (0, 1); 221 static Complex i (0, 1);
234 222
235 return i * log ((i + x) / (i - x)) / 2.0; 223 return i * log ((i + x) / (i - x)) / 2.0;
236 }
237
238 Complex
239 atanh (const Complex& x)
240 {
241 return log ((1.0 + x) / (1.0 - x)) / 2.0;
242 } 224 }
243 225
244 // complex -> bool mappers. 226 // complex -> bool mappers.
245 227
246 bool 228 bool
430 412
431 return -i * log (x + i * sqrt (tmp)); 413 return -i * log (x + i * sqrt (tmp));
432 } 414 }
433 415
434 FloatComplex 416 FloatComplex
435 acosh (const FloatComplex& x)
436 {
437 return log (x + sqrt (x + 1.0f) * sqrt (x - 1.0f));
438 }
439
440 FloatComplex
441 asin (const FloatComplex& x) 417 asin (const FloatComplex& x)
442 { 418 {
443 static FloatComplex i (0, 1); 419 static FloatComplex i (0, 1);
444 420
445 FloatComplex tmp; 421 FloatComplex tmp;
457 433
458 return -i * log (i*x + sqrt (tmp)); 434 return -i * log (i*x + sqrt (tmp));
459 } 435 }
460 436
461 FloatComplex 437 FloatComplex
462 asinh (const FloatComplex& x)
463 {
464 return log (x + sqrt (x*x + 1.0f));
465 }
466
467 FloatComplex
468 atan (const FloatComplex& x) 438 atan (const FloatComplex& x)
469 { 439 {
470 static FloatComplex i (0, 1); 440 static FloatComplex i (0, 1);
471 441
472 return i * log ((i + x) / (i - x)) / 2.0f; 442 return i * log ((i + x) / (i - x)) / 2.0f;
473 } 443 }
474 444
475 FloatComplex
476 atanh (const FloatComplex& x)
477 {
478 return log ((1.0f + x) / (1.0f - x)) / 2.0f;
479 }
480
481 // complex -> bool mappers. 445 // complex -> bool mappers.
482 446
483 bool 447 bool
484 octave_is_NA (const FloatComplex& x) 448 octave_is_NA (const FloatComplex& x)
485 { 449 {
521 } 485 }
522 486
523 Complex 487 Complex
524 rc_acosh (double x) 488 rc_acosh (double x)
525 { 489 {
526 return x < 1.0 ? acosh (Complex (x)) : Complex (acosh (x)); 490 return x < 1.0 ? xacosh (Complex (x)) : Complex (xacosh (x));
527 } 491 }
528 492
529 FloatComplex 493 FloatComplex
530 rc_acosh (float x) 494 rc_acosh (float x)
531 { 495 {
532 return x < 1.0f ? acosh (FloatComplex (x)) : FloatComplex (acoshf (x)); 496 return x < 1.0f ? xacosh (FloatComplex (x)) : FloatComplex (xacosh (x));
533 } 497 }
534 498
535 Complex 499 Complex
536 rc_asin (double x) 500 rc_asin (double x)
537 { 501 {
545 } 509 }
546 510
547 Complex 511 Complex
548 rc_atanh (double x) 512 rc_atanh (double x)
549 { 513 {
550 return fabs (x) > 1.0 ? atanh (Complex (x)) : Complex (atanh (x)); 514 return fabs (x) > 1.0 ? xatanh (Complex (x)) : Complex (xatanh (x));
551 } 515 }
552 516
553 FloatComplex 517 FloatComplex
554 rc_atanh (float x) 518 rc_atanh (float x)
555 { 519 {
556 return fabsf (x) > 1.0f ? atanh (FloatComplex (x)) 520 return fabsf (x) > 1.0f ? xatanh (FloatComplex (x))
557 : FloatComplex (atanhf (x)); 521 : FloatComplex (xatanh (x));
558 } 522 }
559 523
560 Complex 524 Complex
561 rc_log (double x) 525 rc_log (double x)
562 { 526 {