@@ -346,6 +346,341 @@ tape( 'the function returns expected values for job = both (column-major)', func
346346 0.0 , 0.0 , 5.0
347347 ] ) ;
348348
349+ info = dgebal ( 'both' , 3 , A , 1 , 3 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
350+
351+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
352+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
353+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
354+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
355+ t . end ( ) ;
356+ } ) ;
357+
358+ tape ( 'the function returns expected values for job = both with complex input (row-major)' , function test ( t ) {
359+ var expectedScale ;
360+ var expectedOut ;
361+ var expectedA ;
362+ var scale ;
363+ var info ;
364+ var out ;
365+ var A ;
366+
367+ A = new Float64Array ( [
368+ 1.0 , 1.0 , 0.0 ,
369+ 0.0 , 2.0 , 0.0 ,
370+ 0.0 , 0.0 , 3.0
371+ ] ) ;
372+ out = new Float64Array ( 2 ) ;
373+ scale = new Float64Array ( 3 ) ;
374+
375+ expectedOut = new Float64Array ( [ 0.0 , 0.0 ] ) ;
376+ expectedScale = new Float64Array ( [ 0.0 , 1.0 , 2.0 ] ) ;
377+ expectedA = new Float64Array ( [
378+ 1.0 , 1.0 , 0.0 ,
379+ 0.0 , 2.0 , 0.0 ,
380+ 0.0 , 0.0 , 3.0
381+ ] ) ;
382+
383+ info = dgebal ( 'both' , 3 , A , 3 , 1 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
384+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
385+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
386+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
387+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
388+ t . end ( ) ;
389+ } ) ;
390+
391+ tape ( 'the function returns expected values for job = both with complex input (column-major)' , function test ( t ) {
392+ var expectedScale ;
393+ var expectedOut ;
394+ var expectedA ;
395+ var scale ;
396+ var info ;
397+ var out ;
398+ var A ;
399+
400+ A = new Float64Array ( [
401+ 1.0 , 0.0 , 0.0 ,
402+ 1.0 , 2.0 , 0.0 ,
403+ 0.0 , 0.0 , 3.0
404+ ] ) ;
405+ out = new Float64Array ( 2 ) ;
406+ scale = new Float64Array ( 3 ) ;
407+
408+ expectedOut = new Float64Array ( [ 0.0 , 0.0 ] ) ;
409+ expectedScale = new Float64Array ( [ 0.0 , 1.0 , 2.0 ] ) ;
410+ expectedA = new Float64Array ( [
411+ 1.0 , 0.0 , 0.0 ,
412+ 1.0 , 2.0 , 0.0 ,
413+ 0.0 , 0.0 , 3.0
414+ ] ) ;
415+
416+ info = dgebal ( 'both' , 3 , A , 1 , 3 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
417+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
418+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
419+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
420+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
421+ t . end ( ) ;
422+ } ) ;
423+
424+ tape ( 'the function returns expected values for job = both with complex input (row-major)' , function test ( t ) {
425+ var expectedScale ;
426+ var expectedOut ;
427+ var expectedA ;
428+ var scale ;
429+ var info ;
430+ var out ;
431+ var A ;
432+
433+ A = new Float64Array ( [
434+ 1.0 , 0.0 , 2.0 ,
435+ 3.0 , 4.0 , 5.0 ,
436+ 6.0 , 0.0 , 7.0
437+ ] ) ;
438+ out = new Float64Array ( 2 ) ;
439+ scale = new Float64Array ( 3 ) ;
440+
441+ expectedOut = new Float64Array ( [ 1.0 , 2.0 ] ) ;
442+ expectedScale = new Float64Array ( [ 1.0 , 0.5 , 1.0 ] ) ;
443+ expectedA = new Float64Array ( [
444+ 4.0 , 1.5 , 5.0 ,
445+ 0.0 , 1.0 , 4.0 ,
446+ 0.0 , 3.0 , 7.0
447+ ] ) ;
448+
449+ info = dgebal ( 'both' , 3 , A , 3 , 1 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
450+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
451+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
452+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
453+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
454+ t . end ( ) ;
455+ } ) ;
456+
457+ tape ( 'the function returns expected values for job = both with complex input (column-major)' , function test ( t ) {
458+ var expectedScale ;
459+ var expectedOut ;
460+ var expectedA ;
461+ var scale ;
462+ var info ;
463+ var out ;
464+ var A ;
465+
466+ A = new Float64Array ( [
467+ 1.0 , 3.0 , 6.0 ,
468+ 0.0 , 4.0 , 0.0 ,
469+ 2.0 , 5.0 , 7.0
470+ ] ) ;
471+ out = new Float64Array ( 2 ) ;
472+ scale = new Float64Array ( 3 ) ;
473+
474+ expectedOut = new Float64Array ( [ 1.0 , 2.0 ] ) ;
475+ expectedScale = new Float64Array ( [ 1.0 , 0.5 , 1.0 ] ) ;
476+ expectedA = new Float64Array ( [
477+ 4.0 , 0.0 , 0.0 ,
478+ 1.5 , 1.0 , 3.0 ,
479+ 5.0 , 4.0 , 7.0
480+ ] ) ;
481+
482+ info = dgebal ( 'both' , 3 , A , 1 , 3 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
483+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
484+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
485+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
486+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
487+ t . end ( ) ;
488+ } ) ;
489+
490+ tape ( 'the function returns expected values for job = scale with zero norm (row-major)' , function test ( t ) {
491+ var expectedScale ;
492+ var expectedOut ;
493+ var expectedA ;
494+ var scale ;
495+ var info ;
496+ var out ;
497+ var A ;
498+
499+ A = new Float64Array ( [
500+ 1.0 , 0.0 , 4.0 ,
501+ 2.0 , 0.0 , 5.0 ,
502+ 3.0 , 0.0 , 6.0
503+ ] ) ;
504+ out = new Float64Array ( 2 ) ;
505+ scale = new Float64Array ( 3 ) ;
506+
507+ expectedOut = new Float64Array ( [ 0.0 , 2.0 ] ) ;
508+ expectedScale = new Float64Array ( [ 1.0 , 1.0 , 1.0 ] ) ;
509+ expectedA = new Float64Array ( [
510+ 1.0 , 0.0 , 4.0 ,
511+ 2.0 , 0.0 , 5.0 ,
512+ 3.0 , 0.0 , 6.0
513+ ] ) ;
514+
515+ info = dgebal ( 'scale' , 3 , A , 3 , 1 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
516+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
517+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
518+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
519+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
520+ t . end ( ) ;
521+ } ) ;
522+
523+ tape ( 'the function returns expected values for job = scale with zero norm (column-major)' , function test ( t ) {
524+ var expectedScale ;
525+ var expectedOut ;
526+ var expectedA ;
527+ var scale ;
528+ var info ;
529+ var out ;
530+ var A ;
531+
532+ A = new Float64Array ( [
533+ 1.0 , 2.0 , 3.0 ,
534+ 0.0 , 0.0 , 0.0 ,
535+ 4.0 , 5.0 , 6.0
536+ ] ) ;
537+ out = new Float64Array ( 2 ) ;
538+ scale = new Float64Array ( 3 ) ;
539+
540+ expectedOut = new Float64Array ( [ 0.0 , 2.0 ] ) ;
541+ expectedScale = new Float64Array ( [ 1.0 , 1.0 , 1.0 ] ) ;
542+ expectedA = new Float64Array ( [
543+ 1.0 , 2.0 , 3.0 ,
544+ 0.0 , 0.0 , 0.0 ,
545+ 4.0 , 5.0 , 6.0
546+ ] ) ;
547+
548+ info = dgebal ( 'scale' , 3 , A , 1 , 3 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
549+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
550+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
551+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
552+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
553+ t . end ( ) ;
554+ } ) ;
555+
556+ tape ( 'the function returns expected values for job = scale with small values (row-major)' , function test ( t ) {
557+ var expectedScale ;
558+ var expectedOut ;
559+ var expectedA ;
560+ var scale ;
561+ var info ;
562+ var out ;
563+ var A ;
564+
565+ A = new Float64Array ( [
566+ 1.0e-4 , 1.0 , 2.0 , 1.0e4 ,
567+ 2.0e-4 , 1.0 , 2.0 , 2.0e4 ,
568+ 3.0e-4 , 1.0 , 2.0 , 3.0e4 ,
569+ 4.0e-4 , 1.0 , 2.0 , 4.0e4
570+ ] ) ;
571+ out = new Float64Array ( 2 ) ;
572+ scale = new Float64Array ( 4 ) ;
573+
574+ expectedOut = new Float64Array ( [ 0.0 , 3.0 ] ) ;
575+ expectedScale = new Float64Array ( [ 4096.0 , 128.0 , 128.0 , 1.0 ] ) ;
576+ expectedA = new Float64Array ( [
577+ 1.0e-4 , 3.125e-2 , 6.25e-2 , 2.44140625 ,
578+ 6.4e-3 , 1.0 , 2.0 , 1.5625e+2 ,
579+ 9.6e-3 , 1.0 , 2.0 , 2.34375e+2 ,
580+ 1.6384 , 1.28e+2 , 2.56e+2 , 4.0e+4
581+ ] ) ;
582+
583+ info = dgebal ( 'scale' , 4 , A , 4 , 1 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
584+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
585+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
586+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
587+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
588+ t . end ( ) ;
589+ } ) ;
590+
591+ tape ( 'the function returns expected values for job = scale with small values (column-major)' , function test ( t ) {
592+ var expectedScale ;
593+ var expectedOut ;
594+ var expectedA ;
595+ var scale ;
596+ var info ;
597+ var out ;
598+ var A ;
599+
600+ A = new Float64Array ( [
601+ 1.0e-4 , 2.0e-4 , 3.0e-4 , 4.0e-4 ,
602+ 1.0 , 1.0 , 1.0 , 1.0 ,
603+ 2.0 , 2.0 , 2.0 , 2.0 ,
604+ 1.0e4 , 2.0e4 , 3.0e4 , 4.0e4
605+ ] ) ;
606+ out = new Float64Array ( 2 ) ;
607+ scale = new Float64Array ( 4 ) ;
608+
609+ expectedOut = new Float64Array ( [ 0.0 , 3.0 ] ) ;
610+ expectedScale = new Float64Array ( [ 4096.0 , 128.0 , 128.0 , 1.0 ] ) ;
611+ expectedA = new Float64Array ( [
612+ 1.0e-4 , 6.4e-3 , 9.6e-3 , 1.6384 ,
613+ 3.125e-2 , 1.0 , 1.0 , 1.28e+2 ,
614+ 6.25e-2 , 2.0 , 2.0 , 2.56e+2 ,
615+ 2.44140625 , 1.5625e+2 , 2.34375e+2 , 4.0e+4
616+ ] ) ;
617+
618+ info = dgebal ( 'scale' , 4 , A , 1 , 4 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
619+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
620+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
621+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
622+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
623+ t . end ( ) ;
624+ } ) ;
625+
626+ tape ( 'the function returns expected values for job = both with large values (row-major)' , function test ( t ) {
627+ var expectedScale ;
628+ var expectedOut ;
629+ var expectedA ;
630+ var scale ;
631+ var info ;
632+ var out ;
633+ var A ;
634+
635+ A = new Float64Array ( [
636+ 1.0e30 , 1.0 , 1.0e-30 ,
637+ 1.0e30 , 1.0 , 1.0e-30 ,
638+ 1.0e30 , 1.0 , 1.0e-30
639+ ] ) ;
640+ out = new Float64Array ( 2 ) ;
641+ scale = new Float64Array ( 3 ) ;
642+
643+ expectedOut = new Float64Array ( [ 0.0 , 2.0 ] ) ;
644+ expectedScale = new Float64Array ( [ 1.0 , 1125899906842624.0 , 1.2676506002282294e+30 ] ) ; // eslint-disable-line max-len
645+ expectedA = new Float64Array ( [
646+ 1.0e30 , 1.1258999068426240e15 , 1.2676506002282295 ,
647+ 8.8817841970012525e14 , 1.0 , 1.1258999068426241e-15 ,
648+ 7.8886090522101182e-1 , 8.8817841970012523e-16 , 1.0e-30
649+ ] ) ;
650+
651+ info = dgebal ( 'both' , 3 , A , 3 , 1 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
652+ t . strictEqual ( info , 0 , 'returns expected value' ) ;
653+ t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
654+ t . deepEqual ( A , expectedA , 'returns expected value' ) ;
655+ t . deepEqual ( scale , expectedScale , 'returns expected value' ) ;
656+ t . end ( ) ;
657+ } ) ;
658+
659+ tape ( 'the function returns expected values for job = both with large values (column-major)' , function test ( t ) {
660+ var expectedScale ;
661+ var expectedOut ;
662+ var expectedA ;
663+ var scale ;
664+ var info ;
665+ var out ;
666+ var A ;
667+
668+ A = new Float64Array ( [
669+ 1.0e30 , 1.0e30 , 1.0e30 ,
670+ 1.0 , 1.0 , 1.0 ,
671+ 1.0e-30 , 1.0e-30 , 1.0e-30
672+ ] ) ;
673+ out = new Float64Array ( 2 ) ;
674+ scale = new Float64Array ( 3 ) ;
675+
676+ expectedOut = new Float64Array ( [ 0.0 , 2.0 ] ) ;
677+ expectedScale = new Float64Array ( [ 1.0 , 1125899906842624.0 , 1.2676506002282294e+30 ] ) ; // eslint-disable-line max-len
678+ expectedA = new Float64Array ( [
679+ 1.0e30 , 8.8817841970012525e14 , 7.8886090522101182e-1 ,
680+ 1.1258999068426240e15 , 1.0 , 8.8817841970012523e-16 ,
681+ 1.2676506002282295 , 1.1258999068426241e-15 , 1.0e-30
682+ ] ) ;
683+
349684 info = dgebal ( 'both' , 3 , A , 1 , 3 , 0 , out , 1 , 0 , scale , 1 , 0 ) ;
350685 t . strictEqual ( info , 0 , 'returns expected value' ) ;
351686 t . deepEqual ( out , expectedOut , 'returns expected value' ) ;
0 commit comments