@@ -34,6 +34,9 @@ var B_EQ_ZERO = require( './fixtures/b_eq_zero.json' );
3434var A_EQ_D_OPP_SIGN = require ( './fixtures/a_eq_d_opp_sign.json' ) ;
3535var Z_GT_MULTPLEPS = require ( './fixtures/z_gt_multpleps.json' ) ;
3636var Z_LT_MULTPLEPS = require ( './fixtures/z_lt_multpleps.json' ) ;
37+ var SCALE_GT_SAFMAX = require ( './fixtures/scale_gt_safmax.json' ) ;
38+ var SCALE_LT_SAFMIN = require ( './fixtures/scale_lt_safmin.json' ) ;
39+ var Z_LT_MULTPLEPS_B_EQ_ZERO = require ( './fixtures/z_lt_mutpleps_b_eq_zero.json' ) ;
3740
3841
3942// TESTS //
@@ -363,3 +366,192 @@ tape( 'the function returns expected output for Z < MULTPL * EPS', function test
363366
364367 t . end ( ) ;
365368} ) ;
369+
370+ tape ( 'the function returns expected output for very large values' , function test ( t ) {
371+ var RT1R_OUT ;
372+ var RT1I_OUT ;
373+ var RT2R_OUT ;
374+ var RT2I_OUT ;
375+ var CS_OUT ;
376+ var SN_OUT ;
377+ var A_OUT ;
378+ var B_OUT ;
379+ var C_OUT ;
380+ var D_OUT ;
381+ var data ;
382+ var RT1R ;
383+ var RT1I ;
384+ var RT2R ;
385+ var RT2I ;
386+ var CS ;
387+ var SN ;
388+ var A ;
389+ var B ;
390+ var C ;
391+ var D ;
392+
393+ data = SCALE_GT_SAFMAX ;
394+
395+ A = new Float64Array ( data . A ) ;
396+ B = new Float64Array ( data . B ) ;
397+ C = new Float64Array ( data . C ) ;
398+ D = new Float64Array ( data . D ) ;
399+ RT1R = new Float64Array ( data . RT1R ) ;
400+ RT1I = new Float64Array ( data . RT1I ) ;
401+ RT2R = new Float64Array ( data . RT2R ) ;
402+ RT2I = new Float64Array ( data . RT2I ) ;
403+ CS = new Float64Array ( data . CS ) ;
404+ SN = new Float64Array ( data . SN ) ;
405+
406+ dlanv2 ( A , data . offsetA , B , data . offsetB , C , data . offsetC , D , data . offsetD , RT1R , data . offsetRT1R , RT1I , data . offsetRT1I , RT2R , data . offsetRT2R , RT2I , data . offsetRT2I , CS , data . offsetCS , SN , data . offsetSN ) ;
407+
408+ A_OUT = new Float64Array ( data . A_OUT ) ;
409+ B_OUT = new Float64Array ( data . B_OUT ) ;
410+ C_OUT = new Float64Array ( data . C_OUT ) ;
411+ D_OUT = new Float64Array ( data . D_OUT ) ;
412+ RT1R_OUT = new Float64Array ( data . RT1R_OUT ) ;
413+ RT1I_OUT = new Float64Array ( data . RT1I_OUT ) ;
414+ RT2R_OUT = new Float64Array ( data . RT2R_OUT ) ;
415+ RT2I_OUT = new Float64Array ( data . RT2I_OUT ) ;
416+ CS_OUT = new Float64Array ( data . CS_OUT ) ;
417+ SN_OUT = new Float64Array ( data . SN_OUT ) ;
418+
419+ t . deepEqual ( A , A_OUT , 'returns expected value' ) ;
420+ t . deepEqual ( B , B_OUT , 'returns expected value' ) ;
421+ t . deepEqual ( C , C_OUT , 'returns expected value' ) ;
422+ t . deepEqual ( D , D_OUT , 'returns expected value' ) ;
423+ t . deepEqual ( RT1R , RT1R_OUT , 'returns expected value' ) ;
424+ t . deepEqual ( RT1I , RT1I_OUT , 'returns expected value' ) ;
425+ t . deepEqual ( RT2R , RT2R_OUT , 'returns expected value' ) ;
426+ t . deepEqual ( RT2I , RT2I_OUT , 'returns expected value' ) ;
427+ t . deepEqual ( CS , CS_OUT , 'returns expected value' ) ;
428+ t . deepEqual ( SN , SN_OUT , 'returns expected value' ) ;
429+
430+ t . end ( ) ;
431+ } ) ;
432+
433+ tape ( 'the function returns expected output for very small values' , function test ( t ) {
434+ var RT1R_OUT ;
435+ var RT1I_OUT ;
436+ var RT2R_OUT ;
437+ var RT2I_OUT ;
438+ var CS_OUT ;
439+ var SN_OUT ;
440+ var A_OUT ;
441+ var B_OUT ;
442+ var C_OUT ;
443+ var D_OUT ;
444+ var data ;
445+ var RT1R ;
446+ var RT1I ;
447+ var RT2R ;
448+ var RT2I ;
449+ var CS ;
450+ var SN ;
451+ var A ;
452+ var B ;
453+ var C ;
454+ var D ;
455+
456+ data = SCALE_LT_SAFMIN ;
457+
458+ A = new Float64Array ( data . A ) ;
459+ B = new Float64Array ( data . B ) ;
460+ C = new Float64Array ( data . C ) ;
461+ D = new Float64Array ( data . D ) ;
462+ RT1R = new Float64Array ( data . RT1R ) ;
463+ RT1I = new Float64Array ( data . RT1I ) ;
464+ RT2R = new Float64Array ( data . RT2R ) ;
465+ RT2I = new Float64Array ( data . RT2I ) ;
466+ CS = new Float64Array ( data . CS ) ;
467+ SN = new Float64Array ( data . SN ) ;
468+
469+ dlanv2 ( A , data . offsetA , B , data . offsetB , C , data . offsetC , D , data . offsetD , RT1R , data . offsetRT1R , RT1I , data . offsetRT1I , RT2R , data . offsetRT2R , RT2I , data . offsetRT2I , CS , data . offsetCS , SN , data . offsetSN ) ;
470+
471+ A_OUT = new Float64Array ( data . A_OUT ) ;
472+ B_OUT = new Float64Array ( data . B_OUT ) ;
473+ C_OUT = new Float64Array ( data . C_OUT ) ;
474+ D_OUT = new Float64Array ( data . D_OUT ) ;
475+ RT1R_OUT = new Float64Array ( data . RT1R_OUT ) ;
476+ RT1I_OUT = new Float64Array ( data . RT1I_OUT ) ;
477+ RT2R_OUT = new Float64Array ( data . RT2R_OUT ) ;
478+ RT2I_OUT = new Float64Array ( data . RT2I_OUT ) ;
479+ CS_OUT = new Float64Array ( data . CS_OUT ) ;
480+ SN_OUT = new Float64Array ( data . SN_OUT ) ;
481+
482+ t . deepEqual ( A , A_OUT , 'returns expected value' ) ;
483+ t . deepEqual ( B , B_OUT , 'returns expected value' ) ;
484+ t . deepEqual ( C , C_OUT , 'returns expected value' ) ;
485+ t . deepEqual ( D , D_OUT , 'returns expected value' ) ;
486+ t . deepEqual ( RT1R , RT1R_OUT , 'returns expected value' ) ;
487+ t . deepEqual ( RT1I , RT1I_OUT , 'returns expected value' ) ;
488+ t . deepEqual ( RT2R , RT2R_OUT , 'returns expected value' ) ;
489+ t . deepEqual ( RT2I , RT2I_OUT , 'returns expected value' ) ;
490+ t . deepEqual ( CS , CS_OUT , 'returns expected value' ) ;
491+ t . deepEqual ( SN , SN_OUT , 'returns expected value' ) ;
492+
493+ t . end ( ) ;
494+ } ) ;
495+
496+ tape ( 'the function returns expected output when B = 0 post rotation' , function test ( t ) {
497+ var RT1R_OUT ;
498+ var RT1I_OUT ;
499+ var RT2R_OUT ;
500+ var RT2I_OUT ;
501+ var CS_OUT ;
502+ var SN_OUT ;
503+ var A_OUT ;
504+ var B_OUT ;
505+ var C_OUT ;
506+ var D_OUT ;
507+ var data ;
508+ var RT1R ;
509+ var RT1I ;
510+ var RT2R ;
511+ var RT2I ;
512+ var CS ;
513+ var SN ;
514+ var A ;
515+ var B ;
516+ var C ;
517+ var D ;
518+
519+ data = Z_LT_MULTPLEPS_B_EQ_ZERO ;
520+
521+ A = new Float64Array ( data . A ) ;
522+ B = new Float64Array ( data . B ) ;
523+ C = new Float64Array ( data . C ) ;
524+ D = new Float64Array ( data . D ) ;
525+ RT1R = new Float64Array ( data . RT1R ) ;
526+ RT1I = new Float64Array ( data . RT1I ) ;
527+ RT2R = new Float64Array ( data . RT2R ) ;
528+ RT2I = new Float64Array ( data . RT2I ) ;
529+ CS = new Float64Array ( data . CS ) ;
530+ SN = new Float64Array ( data . SN ) ;
531+
532+ dlanv2 ( A , data . offsetA , B , data . offsetB , C , data . offsetC , D , data . offsetD , RT1R , data . offsetRT1R , RT1I , data . offsetRT1I , RT2R , data . offsetRT2R , RT2I , data . offsetRT2I , CS , data . offsetCS , SN , data . offsetSN ) ;
533+
534+ A_OUT = new Float64Array ( data . A_OUT ) ;
535+ B_OUT = new Float64Array ( data . B_OUT ) ;
536+ C_OUT = new Float64Array ( data . C_OUT ) ;
537+ D_OUT = new Float64Array ( data . D_OUT ) ;
538+ RT1R_OUT = new Float64Array ( data . RT1R_OUT ) ;
539+ RT1I_OUT = new Float64Array ( data . RT1I_OUT ) ;
540+ RT2R_OUT = new Float64Array ( data . RT2R_OUT ) ;
541+ RT2I_OUT = new Float64Array ( data . RT2I_OUT ) ;
542+ CS_OUT = new Float64Array ( data . CS_OUT ) ;
543+ SN_OUT = new Float64Array ( data . SN_OUT ) ;
544+
545+ t . deepEqual ( A , A_OUT , 'returns expected value' ) ;
546+ t . deepEqual ( B , B_OUT , 'returns expected value' ) ;
547+ t . deepEqual ( C , C_OUT , 'returns expected value' ) ;
548+ t . deepEqual ( D , D_OUT , 'returns expected value' ) ;
549+ t . deepEqual ( RT1R , RT1R_OUT , 'returns expected value' ) ;
550+ t . deepEqual ( RT1I , RT1I_OUT , 'returns expected value' ) ;
551+ t . deepEqual ( RT2R , RT2R_OUT , 'returns expected value' ) ;
552+ t . deepEqual ( RT2I , RT2I_OUT , 'returns expected value' ) ;
553+ t . deepEqual ( CS , CS_OUT , 'returns expected value' ) ;
554+ t . deepEqual ( SN , SN_OUT , 'returns expected value' ) ;
555+
556+ t . end ( ) ;
557+ } ) ;
0 commit comments