numeric-linalg

Educational material on the SciPy implementation of numerical linear algebra algorithms

NameSizeMode
..
lapack/DOCS/groups-usr.dox 54069B -rw-r--r--
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
/**

@defgroup lapack_top                LAPACK
@{
    @defgroup solve_top             Linear solve, AX = B
    @{
        @defgroup gesv_driver_grp   LU: General matrix, driver
        @{
            @defgroup gesv_driver   --- full ---
            @defgroup gesv          gesv:           factor and solve
            @defgroup gesvx         gesvx:          factor and solve, expert
            @defgroup gesvxx        gesvxx:         factor and solve, extra precise
            @defgroup gesv_mixed    gesv:           factor and solve, mixed precision

            @defgroup gbsv_driver   --- banded ---
            @defgroup gbsv          gbsv:           factor and solve
            @defgroup gbsvx         gbsvx:          factor and solve, expert
            @defgroup gbsvxx        gbsvxx:         factor and solve, extra precise

            @defgroup gtsv_driver   --- tridiagonal ---
            @defgroup gtsv          gtsv:           factor and solve
            @defgroup gtsvx         gtsvx:          factor and solve, expert
        @}

        @defgroup gesv_comp_grp     LU: computational routines (factor, cond, etc.)
        @{
            @defgroup gesv_comp     --- full ---
            @defgroup gecon         gecon:          condition number estimate
            @defgroup getrf         getrf:          triangular factor
            @defgroup getrf2        getrf2:         triangular factor panel, recursive?
            @defgroup getf2         getf2:          triangular factor panel, level 2
            @defgroup getrs         getrs:          triangular solve using factor
            @defgroup getri         getri:          triangular inverse
            @defgroup gerfs         gerfs:          iterative refinement
            @defgroup gerfsx        gerfsx:         iterative refinement, expert
            @defgroup geequ         geequ:          equilibration
            @defgroup geequb        geequb:         equilibration, power of 2
            @defgroup laqge         laqge:          row/col scale matrix
            @defgroup laswp         laswp:          swap permutation

            @defgroup getc2         getc2:          triangular factor, with complete pivoting
            @defgroup gesc2         gesc2:          triangular solve using factor, with complete pivoting
            @defgroup latdf         latdf:          Dif-estimate with complete pivoting LU, step in tgsen

            @defgroup la_gercond    la_gercond: Skeel condition number estimate
            @defgroup la_gerpvgrw   la_gerpvgrw: reciprocal pivot growth
            @defgroup la_gerfsx_extended  la_gerfsx_extended:  step in gerfsx

            @defgroup gbsv_comp     --- banded ---
            @defgroup gbcon         gbcon:          condition number estimate
            @defgroup gbtrf         gbtrf:          triangular factor
            @defgroup gbtf2         gbtf2:          triangular factor, level 2
            @defgroup gbtrs         gbtrs:          triangular solve using factor
            @defgroup gbrfs         gbrfs:          iterative refinement
            @defgroup gbrfsx        gbrfsx:         iterative refinement, expert
            @defgroup gbequ         gbequ:          equilibration
            @defgroup gbequb        gbequb:         equilibration, power of 2
            @defgroup laqgb         laqgb:          row/col scale matrix
            @defgroup la_gbrcond    la_gbrcond:     Skeel condition number estimate
            @defgroup la_gbrpvgrw   la_gbrpvgrw:    reciprocal pivot growth
            @defgroup la_gbrfsx_extended  la_gbrfsx_extended:  step in gbrfsx

            @defgroup gtsv_comp     --- tridiagonal ---
            @defgroup gtcon         gtcon:          condition number estimate
            @defgroup gttrf         gttrf:          triangular factor
            @defgroup gttrs         gttrs:          triangular solve using factor
            @defgroup gtts2         gtts2:          triangular solve using factor
            @defgroup gtrfs         gtrfs:          iterative refinement
        @}

        @defgroup posv_driver_grp   Cholesky: Hermitian/symmetric positive definite matrix, driver
        @{
            @defgroup posv_driver   --- full ---
            @defgroup posv          posv:           factor and solve
            @defgroup posvx         posvx:          factor and solve, expert
            @defgroup posvxx        posvxx:         factor and solve, extra precise
            @defgroup posv_mixed    posv:           factor and solve, mixed precision

            @defgroup ppsv_driver   --- packed ---
            @defgroup ppsv          ppsv:           factor and solve
            @defgroup ppsvx         ppsvx:          factor and solve, expert

            @defgroup pfsv_driver   --- rectangular full packed (RFP) ---
            @defgroup pfsv          pfsv:           factor and solve [not available]

            @defgroup pbsv_driver   --- banded ---
            @defgroup pbsv          pbsv:           factor and solve
            @defgroup pbsvx         pbsvx:          factor and solve, expert

            @defgroup ptsv_driver   --- tridiagonal ---
            @defgroup ptsv          ptsv:           factor and solve
            @defgroup ptsvx         ptsvx:          factor and solve, expert
        @}

        @defgroup posv_comp_grp     Cholesky: computational routines (factor, cond, etc.)
        @{
            @defgroup posv_comp     --- full ---
            @defgroup pocon         pocon:          condition number estimate
            @defgroup potrf         potrf:          triangular factor
            @defgroup potrf2        potrf2:         triangular factor panel, recursive?
            @defgroup potf2         potf2:          triangular factor panel, level 2
            @defgroup pstrf         pstrf:          triangular factor, with pivoting
            @defgroup pstf2         pstf2:          triangular factor, with pivoting panel, level 2
            @defgroup potrs         potrs:          triangular solve using factor
            @defgroup potri         potri:          triangular inverse
            @defgroup porfs         porfs:          iterative refinement
            @defgroup porfsx        porfsx:         iterative refinement, expert
            @defgroup poequ         poequ:          equilibration
            @defgroup poequb        poequb:         equilibration, power of 2
            @defgroup laqhe         laqhe:          row/col scale matrix
            @defgroup la_porcond    la_porcond:     Skeel condition number estimate
            @defgroup la_porpvgrw   la_porpvgrw:    reciprocal pivot growth
            @defgroup la_porfsx_extended  la_porfsx_extended:  step in porfsx

            @defgroup ppsv_comp     --- packed ---
            @defgroup ppcon         ppcon:          condition number estimate
            @defgroup pptrf         pptrf:          triangular factor
            @defgroup pptrs         pptrs:          triangular solve using factor
            @defgroup pptri         pptri:          triangular inverse
            @defgroup pprfs         pprfs:          iterative refinement
            @defgroup ppequ         ppequ:          equilibration
            @defgroup laqhp         laqhp:          row/col scale matrix

            @defgroup pfsv_comp     --- rectangular full packed (RFP) ---
            @defgroup pftrf         pftrf:          triangular factor
            @defgroup pftrs         pftrs:          triangular solve using factor
            @defgroup pftri         pftri:          triangular inverse

            @defgroup pbsv_comp     --- banded ---
            @defgroup pbcon         pbcon:          condition number estimate
            @defgroup pbtrf         pbtrf:          triangular factor
            @defgroup pbtf2         pbtf2:          triangular factor panel, level 2
            @defgroup pbtrs         pbtrs:          triangular solve using factor
            @defgroup pbrfs         pbrfs:          iterative refinement
            @defgroup pbequ         pbequ:          equilibration
            @defgroup laqhb         laqhb:          row/col scale matrix

            @defgroup ptsv_comp     --- tridiagonal ---
            @defgroup ptcon         ptcon:          condition number estimate
            @defgroup pttrf         pttrf:          triangular factor
            @defgroup pttrs         pttrs:          triangular solve using factor
            @defgroup ptts2         ptts2:          triangular solve using factor, unblocked
            @defgroup ptrfs         ptrfs:          iterative refinement
        @}

        @defgroup hesv_driver_grp   LDL: Hermitian/symmetric indefinite matrix, driver
        @{
            @defgroup hesv_driver   --- full, rook pivoting ---
            @defgroup hesv          {he,sy}sv:      rook (v1)
            @defgroup hesv_rook     {he,sy}sv_rook: rook (v2)
            @defgroup hesv_rk       {he,sy}sv_rk:   rook (v3)
            @defgroup hesvx         {he,sy}svx:     rook (v1, expert)
            @defgroup hesvxx        {he,sy}svxx:    rook (v1, expert)

            @defgroup hpsv_driver   --- packed, rook pivoting ---
            @defgroup hpsv          {hp,sp}sv:      factor and solve
            @defgroup hpsvx         {hp,sp}svx:     factor and solve, expert

            @defgroup hesv_aa_driver  --- full, Aasen ---
            @defgroup hesv_aa       {he,sy}sv_aa:   Aasen
            @defgroup hesv_aa_2stage  {he,sy}sv_aa_2stage:  Aasen, blocked 2-stage
        @}

        @defgroup hesv_comp_grp     LDL: computational routines (factor, cond, etc.)
        @{
            @defgroup hesv_comp_v1  --- full, rook v1 ---
            @defgroup hecon         {he,sy}con:     condition number estimate
            @defgroup hetrf         {he,sy}trf:     triangular factor
            @defgroup lahef         la{he,sy}f:     step in hetrf
            @defgroup hetf2         {he,sy}tf2:     triangular factor, level 2
            @defgroup hetrs         {he,sy}trs:     triangular solve using factor
            @defgroup hetri         {he,sy}tri:     triangular inverse
            @defgroup herfs         {he,sy}rfs:     iterative refinement
            @defgroup herfsx        {he,sy}rfsx:    iterative refinement, expert
            @defgroup heequb        {he,sy}equb:    equilibration, power of 2
            @defgroup syconv        syconv:         convert to/from L and D from hetrf

            @defgroup hecon_3       {he,sy}con_3:   condition number estimate
            @defgroup hetri2        {he,sy}tri2:    inverse
            @defgroup hetri2x       {he,sy}tri2x:   inverse
            @defgroup hetri_3       {he,sy}tri_3:   inverse
            @defgroup hetri_3x      {he,sy}tri_3x:  inverse
            @defgroup hetrs2        {he,sy}trs2:    solve using factor
            @defgroup hetrs_3       {he,sy}trs_3:   solve using factor

            @defgroup heswapr             {he,sy}swapr:         apply 2-sided permutation
            @defgroup la_hercond          la_hercond:           Skeel condition number estimate
            @defgroup la_herfsx_extended  la_herfsx_extended:   step in herfsx
            @defgroup la_herpvgrw         la_herpvgrw:          reciprocal pivot growth

            @defgroup hpsv_comp     --- packed, rook v1 ---
            @defgroup hpcon         {hp,sp}con:     condition number estimate
            @defgroup hptrf         {hp,sp}trf:     triangular factor
            @defgroup hptrs         {hp,sp}trs:     triangular solve using factor
            @defgroup hptri         {hp,sp}tri:     triangular inverse
            @defgroup hprfs         {hp,sp}rfs:     iterative refinement

            @defgroup hesv_comp_v2  --- full, rook v2 ---
            @defgroup hecon_rook    {he,sy}con_rook:  condition number estimate
            @defgroup hetrf_rook    {he,sy}trf_rook:  triangular factor
            @defgroup lahef_rook    la{he,sy}f_rook:  triangular factor step
            @defgroup hetf2_rook    {he,sy}tf2_rook:  triangular factor, level 2
            @defgroup hetrs_rook    {he,sy}trs_rook:  triangular solve using factor
            @defgroup hetri_rook    {he,sy}tri_rook:  triangular inverse

            @defgroup hesv_comp_v3  --- full, rook v3 ---
            @defgroup hetrf_rk      {he,sy}trf_rk:  triangular factor
            @defgroup lahef_rk      la{he,sy}f_rk:  triangular factor step
            @defgroup hetf2_rk      {he,sy}tf2_rk:  triangular factor, level 2
            @defgroup syconvf       syconvf:        convert to/from hetrf      to hetrf_rk format
            @defgroup syconvf_rook  syconvf_rook:   convert to/from hetrf_rook to hetrf_rk format

            @defgroup hesv_comp_aasen  --- full, Aasen ---
            @defgroup hetrf_aa      {he,sy}trf_aa:  triangular factor
            @defgroup lahef_aa      la{he,sy}f_aa:  triangular factor partial factor
            @defgroup hetrs_aa      {he,sy}trs_aa:  triangular solve using factor

            @defgroup hesv_comp_aasen2 --- full, Aasen, blocked 2-stage ---
            @defgroup hetrf_aa_2stage  {he,sy}trf_aa_2stage:  triangular factor
            @defgroup hetrs_aa_2stage  {he,sy}trs_aa_2stage:  triangular solve using factor
        @}

        @defgroup trsv_comp_grp     Triangular computational routines (solve, cond, etc.)
        @{
            @defgroup trsv_comp     --- full ---
            @defgroup trcon         trcon:          condition number estimate
            @defgroup trtrs         trtrs:          triangular solve
            @defgroup latrs         latrs:          triangular solve with robust scaling
            @defgroup latrs3        latrs3:         triangular solve with robust scaling, level 3
            @defgroup trtri         trtri:          triangular inverse
            @defgroup trti2         trti2:          triangular inverse, level 2
            @defgroup trrfs         trrfs:          triangular iterative refinement
            @defgroup lauum         lauum:          triangular multiply: U^H U
            @defgroup lauu2         lauu2:          triangular multiply: U^H U, level 2

            @defgroup tpsv_comp     --- packed ---
            @defgroup tpcon         tpcon:          condition number estimate
            @defgroup tptrs         tptrs:          triangular solve
            @defgroup latps         latps:          triangular solve with robust scaling
            @defgroup tptri         tptri:          triangular inverse
            @defgroup tprfs         tprfs:          triangular iterative refinement

            @defgroup tfsv_comp     --- rectangular full packed (RFP) ---
            @defgroup tftri         tftri:          triangular inverse, RFP

            @defgroup tbsv_comp     --- banded ---
            @defgroup tbcon         tbcon:          condition number estimate
            @defgroup tbtrs         tbtrs:          triangular solve
            @defgroup latbs         latbs:          triangular solve with scaling
            @defgroup tbrfs         tbrfs:          triangular iterative refinement
        @}

        @defgroup solve_aux_grp     Auxiliary routines
        @{
            @defgroup lacn2         lacn2:          1-norm estimate, e.g., || A^{-1} ||_1 in gecon
            @defgroup lacon         lacon:          1-norm estimate, e.g., || A^{-1} ||_1 in gecon, old
            @defgroup la_lin_berr   la_lin_berr:    backward error
        @}
    @}

    @defgroup gels_top Least squares
    @{
        @defgroup gels_driver_grp   Standard least squares, min || Ax - b ||_2
        @{
            @defgroup gels          gels:           least squares using QR/LQ
            @defgroup gelst         gelst:          least squares using QR/LQ with T matrix
            @defgroup gelss         gelss:          least squares using SVD, QR iteration
            @defgroup gelsd         gelsd:          least squares using SVD, divide and conquer
            @defgroup gelsy         gelsy:          least squares using complete orthogonal factor
            @defgroup getsls        getsls:         least squares using tall-skinny QR/LQ
        @}

        @defgroup ggls_driver_grp   Constrained least squares
        @{
            @defgroup gglse         gglse:          equality-constrained least squares
            @defgroup ggglm         ggglm:          Gauss-Markov linear model
        @}

        @defgroup gels_aux_grp      Auxiliary routines
        @{
            @defgroup laic1         laic1:          condition estimate, step in gelsy
            @defgroup lals0         lals0:          back multiplying factors, step in gelsd
            @defgroup lalsa         lalsa:          SVD of coefficient matrix, step in gelsd
            @defgroup lalsd         lalsd:          uses SVD for least squares, step in gelsd
        @}
    @}

    @defgroup unitary_top Orthogonal/unitary factors (QR, CS, etc.)
    @{
        @defgroup geqr_comp_grp     QR
        @{
            @defgroup geqr_comp1    --- flexible ---
            @defgroup geqr          geqr:           QR factor, flexible
            @defgroup gemqr         gemqr:          multiply by Q from geqr

            @defgroup geqr_comp2    --- classic ---
            @defgroup geqrf         geqrf:          QR factor
            @defgroup geqr2         geqr2:          QR factor, level 2
            @defgroup ungqr         {un,or}gqr:     generate explicit Q from geqrf
            @defgroup ung2r         {un,or}g2r:     generate explicit Q from geqrf, level 2
            @defgroup unmqr         {un,or}mqr:     multiply by Q from geqrf
            @defgroup unm2r         {un,or}m2r:     multiply by Q from geqrf, level 2

            @defgroup geqr_comp3    --- with T ---
            @defgroup geqrt         geqrt:          QR factor, with T
            @defgroup geqrt2        geqrt2:         QR factor, with T, level 2
            @defgroup geqrt3        geqrt3:         QR factor, with T, recursive panel
            @defgroup gemqrt        gemqrt:         multiply by Q from geqrt

            @defgroup geqr_comp4    --- positive ---
            @defgroup geqrfp        geqrfp:         QR factor, diag( R ) ≥ 0
            @defgroup geqr2p        geqr2p:         QR factor, diag( R ) ≥ 0, level 2
        @}

        @defgroup geqpf_comp_grp    QR with pivoting
        @{
            @defgroup geqp3         geqp3:          QR factor with pivoting, level 3
            @defgroup laqp2         laqp2:          step of geqp3
            @defgroup laqps         laqps:          step of geqp3
        @}

        @defgroup getsqr_comp_grp   QR, tall-skinny
        @{
            @defgroup latsqr        latsqr:         tall-skinny QR factor
            @defgroup ungtsqr       {un,or}gtsqr:   generate Q from latsqr
            @defgroup ungtsqr_row   {un,or}gtsqr_row:   generate Q from latsqr
            @defgroup larfb_gett    larfb_gett:     step in ungtsqr_row
            @defgroup lamtsqr       lamtsqr:        multiply by Q from latsqr
            @defgroup getsqrhrt     getsqrhrt:      tall-skinny QR factor, with Householder reconstruction
            @defgroup unhr_col      {un,or}hr_col:  Householder reconstruction
            @defgroup launhr_col_getrfnp   la{un,or}hr_col_getrfnp:   LU factor without pivoting
            @defgroup launhr_col_getrfnp2  la{un,or}hr_col_getrfnp2:  LU factor without pivoting, level 2
        @}

        @defgroup tpqr_comp_grp     QR, triangular-pentagonal
        @{
            @defgroup tpqrt         tpqrt:          QR factor
            @defgroup tpqrt2        tpqrt2:         QR factor, level 2
            @defgroup tpmqrt        tpmqrt:         applies Q
            @defgroup tprfb         tprfb:          applies Q (like larfb)
        @}

        @defgroup ggqr_comp_grp     Generalized QR
        @{
            @defgroup ggqrf         ggqrf:          Generalized QR factor
        @}

        @defgroup gelq_comp_grp     LQ
        @{
            @defgroup gelq_comp1    --- flexible ---
            @defgroup gelq          gelq:           LQ factor, flexible
            @defgroup gemlq         gemlq:          multiply by Q from gelq

            @defgroup gelq_comp2    --- classic ---
            @defgroup gelqf         gelqf:          LQ factor
            @defgroup gelq2         gelq2:          LQ factor, level 2
            @defgroup unglq         {un,or}glq:     generate explicit Q from gelqf
            @defgroup ungl2         {un,or}gl2:     generate explicit Q, level 2, step in unglq
            @defgroup unmlq         {un,or}mlq:     multiply by Q from gelqf
            @defgroup unml2         {un,or}ml2:     multiply by Q, level 2, step in unmlq

            @defgroup gelq_comp3    --- with T ---
            @defgroup gelqt         gelqt:          LQ factor, with T
            @defgroup gelqt3        gelqt3:         LQ factor, with T, recursive
            @defgroup gemlqt        gemlqt:         multiply by Q from gelqt
        @}

        @defgroup geswlq_comp_grp   LQ, short-wide
        @{
            @defgroup laswlq        laswlq:         short-wide LQ factor
            @defgroup lamswlq       lamswlq:        multiply by Q from laswlq
        @}

        @defgroup tplq_comp_grp     LQ, triangular-pentagonal
        @{
            @defgroup tplqt         tplqt:          QR factor
            @defgroup tplqt2        tplqt2:         QR factor, level 2
            @defgroup tpmlqt        tpmlqt:         applies Q
        @}

        @defgroup geql_comp_grp     QL
        @{
            @defgroup geqlf         geqlf:          QL factor
            @defgroup geql2         geql2:          QL factor, level 2
            @defgroup ungql         {un,or}gql:     generate explicit Q from geqlf
            @defgroup unmql         {un,or}mql:     multiply by Q from geqlf
            @defgroup ung2l         {un,or}g2l:     step in ungql
            @defgroup unm2l         {un,or}m2l:     step in unmql
        @}

        @defgroup gerq_comp_grp     RQ
        @{
            @defgroup gerqf         gerqf:          RQ factor
            @defgroup gerq2         gerq2:          RQ factor, level 2
            @defgroup ungrq         {un,or}grq:     generate explicit Q from gerqf
            @defgroup unmrq         {un,or}mrq:     multiply by Q from gerqf
            @defgroup unmr2         {un,or}mr2:     step in unmrq
            @defgroup ungr2         {un,or}gr2:     step in ungrq
        @}

        @defgroup ggrq_comp_grp     Generalized RQ
        @{
            @defgroup ggrqf         ggrqf:          Generalized RQ factor
        @}

        @defgroup gerz_comp_grp     RZ
        @{
            @defgroup tzrzf         tzrzf:          RZ factor
            @defgroup latrz         latrz:          RZ factor step
            @defgroup unmrz         {un,or}mrz:     multiply by Z from tzrzf
            @defgroup unmr3         {un,or}mr3:     step in unmrz
            @defgroup larz          larz:           apply reflector
            @defgroup larzb         larzb:          apply block reflector
            @defgroup larzt         larzt:          generate T matrix
        @}

        @defgroup gecs_comp_grp     Cosine-Sine (CS) decomposition
        @{
            @defgroup bbcsd         bbcsd:          ??
            @defgroup uncsd         {un,or}csd:     ??
            @defgroup uncsd2by1     {un,or}csd2by1: ??
            @defgroup unbdb         {un,or}bdb:     bidiagonalize partitioned unitary matrix, step in uncsd
            @defgroup unbdb1        {un,or}bdb1:    step in uncsd2by1
            @defgroup unbdb2        {un,or}bdb2:    step in uncsd2by1
            @defgroup unbdb3        {un,or}bdb3:    step in uncsd2by1
            @defgroup unbdb4        {un,or}bdb4:    step in uncsd2by1
            @defgroup unbdb5        {un,or}bdb5:    step in uncsd2by1
            @defgroup unbdb6        {un,or}bdb6:    step in uncsd2by1

            @defgroup lapmr         lapmr:          permute rows
            @defgroup lapmt         lapmt:          permute cols
        @}

        @defgroup reflector_aux_grp Householder reflectors
        @{
            @defgroup larf          larf:           apply Householder reflector
            @defgroup larfx         larfx:          apply Householder reflector, unrolled
            @defgroup larfy         larfy:          apply Householder reflector symmetrically (2-sided)
            @defgroup larfb         larfb:          apply block Householder reflector
            @defgroup larfg         larfg:          generate Householder reflector
            @defgroup larfgp        larfgp:         generate Householder reflector, beta ≥ 0
            @defgroup larft         larft:          generate T matrix
        @}

        @defgroup rot_aux_grp       Givens/Jacobi plane rotations
        @{
            @defgroup lartg         lartg:          generate plane rotation, more accurate than BLAS rot
            @defgroup lartgp        lartgp:         generate plane rotation, more accurate than BLAS rot
            @defgroup lasr          lasr:           apply series of plane rotations
            @defgroup largv         largv:          generate vector of plane rotations
            @defgroup lartv         lartv:          apply vector of plane rotations to vectors
            @defgroup lar2v         lar2v:          apply vector of plane rotations to 2x2 matrices
            @defgroup lacrt         lacrt:          apply plane rotation (unused?)
        @}
    @}

    @defgroup geev_top              Non-symmetric eigenvalues
    @{
        @defgroup geev_driver_grp   Standard eig driver, AV = VΛ
        @{
            @defgroup geev          geev:           eig
            @defgroup geevx         geevx:          eig, expert

            @defgroup gees          gees:           Schur form
            @defgroup geesx         geesx:          Schur form, expert
        @}

        @defgroup ggev_driver_grp   Generalized eig driver
        @{
            @defgroup ggev3         ggev3:          eig
            @defgroup ggev          ggev:           eig, unblocked
            @defgroup ggevx         ggevx:          eig, expert

            @defgroup gges3         gges3:          Schur form
            @defgroup gges          gges:           Schur form, unblocked
            @defgroup ggesx         ggesx:          Schur form, expert
        @}

        @defgroup gedmd             DMD driver, Dynamic Mode Decomposition

        @defgroup geev_comp_grp     Eig computational routines
        @{
            @defgroup gebal         gebal:          balance matrix
            @defgroup gehrd         gehrd:          reduction to Hessenberg
            @defgroup gehd2         gehd2:          reduction to Hessenberg, level 2
            @defgroup lahr2         lahr2:          step in gehrd
            @defgroup unghr         {un,or}ghr:     generate Q from gehrd
            @defgroup unmhr         {un,or}mhr:     multiply by Q from gehrd
            @defgroup gebak         gebak:          back-transform eigvec
            @defgroup hseqr         hseqr:          Hessenberg eig, QR iteration
            @defgroup hsein         hsein:          Hessenberg inverse iteration for eigvec
            @defgroup trevc         trevc:          eigenvectors of triangular Schur form, old
            @defgroup trevc3        trevc3:         eigenvectors of triangular Schur form, blocked
            @defgroup laln2         laln2:          1x1 or 2x2 solve, step in trevc

            @defgroup trsyl         trsyl:          Sylvester equation
            @defgroup trsyl3        trsyl3:         Sylvester equation, level 3
            @defgroup lasy2         lasy2:          Sylvester equation

            @defgroup trsna         trsna:          eig condition numbers
            @defgroup laqtr         laqtr:          quasi-triangular solve

            @defgroup trexc         trexc:          reorder Schur form
            @defgroup trsen         trsen:          reorder Schur form
            @defgroup laexc         laexc:          reorder Schur form

            @defgroup lanv2         lanv2:          2x2 Schur factor

            @defgroup laqr_group    --- hseqr auxiliary ---
            @defgroup laein         laein:          eigvec by Hessenberg inverse iteration
            @defgroup lahqr         lahqr:          eig of Hessenberg, step in hseqr
            @defgroup laqr0         laqr0:          eig of Hessenberg, step in hseqr
            @defgroup laqr1         laqr1:          step in hseqr
            @defgroup laqr2         laqr2:          step in hseqr
            @defgroup laqr3         laqr3:          step in hseqr
            @defgroup laqr4         laqr4:          eig of Hessenberg, step in hseqr
            @defgroup laqr5         laqr5:          step in hseqr

            @defgroup iparmq        iparmq:         set parameters for hseqr

            @defgroup laqz_group    --- ggev3, gges3 auxiliary ---
            @defgroup laqz0         laqz0:          step in ggev3, gges3
            @defgroup laqz1         laqz1:          step in ggev3, gges3
            @defgroup laqz2         laqz2:          step in ggev3, gges3
            @defgroup laqz3         laqz3:          step in ggev3, gges3
            @defgroup laqz4         laqz4:          step in ggev3, gges3
        @}

        @defgroup ggev_comp_grp     Generalized eig computational routines
        @{
            @defgroup ggbal         ggbal:          balance matrix
            @defgroup gghrd         gghrd:          reduction to Hessenberg
            @defgroup gghd3         gghd3:          reduction to Hessenberg, level 3
            @defgroup hgeqz         hgeqz:          generalized Hessenberg eig
            @defgroup ggbak         ggbak:          back-transform eigvec
            @defgroup tgsen         tgsen:          reorder generalized Schur form
            @defgroup tgsna         tgsna:          reciprocal cond est
            @defgroup tgsyl         tgsyl:          Sylvester equation
            @defgroup tgsy2         tgsy2:          Sylvester equation panel (?)
            @defgroup unm22         {un,or}m22:     multiply by banded Q, step in gghd3
            @defgroup lagv2         lagv2:          2x2 generalized Schur factor
            @defgroup tgevc         tgevc:          eigvec of pair of matrices
            @defgroup tgexc         tgexc:          reorder generalized Schur form
            @defgroup tgex2         tgex2:          reorder generalized Schur form
        @}
    @}

    @defgroup heev_top              Hermitian/symmetric eigenvalues
    @{
        @defgroup heev_driver_grp   Standard eig driver, AV = VΛ
        @{
            @defgroup heev_driver   --- full ---
            @defgroup heev          {he,sy}ev:      eig, QR iteration
            @defgroup heevd         {he,sy}evd:     eig, divide and conquer
            @defgroup heevr         {he,sy}evr:     eig, MRRR
            @defgroup heevx         {he,sy}evx:     eig, bisection

            @defgroup heev_driver2  --- full, 2-stage ---
            @defgroup heev_2stage   {he,sy}ev_2stage:   eig, QR iteration
            @defgroup heevd_2stage  {he,sy}evd_2stage:  eig, divide and conquer
            @defgroup heevr_2stage  {he,sy}evr_2stage:  eig, MRRR
            @defgroup heevx_2stage  {he,sy}evx_2stage:  eig, bisection

            @defgroup hpev_driver   --- packed ---
            @defgroup hpev          {hp,sp}ev:      eig, QR iteration
            @defgroup hpevd         {hp,sp}evd:     eig, divide and conquer
            @defgroup hpevx         {hp,sp}evx:     eig, bisection

            @defgroup hbev_driver   --- banded ---
            @defgroup hbev          {hb,sb}ev:      eig, QR iteration
            @defgroup hbevd         {hb,sb}evd:     eig, divide and conquer
            @defgroup hbevx         {hb,sb}evx:     eig, bisection

            @defgroup hbev_driver2  --- banded, 2nd-stage ---
            @defgroup hbev_2stage   {hb,sb}ev_2stage:   eig, QR iteration
            @defgroup hbevd_2stage  {hb,sb}evd_2stage:  eig, divide and conquer
            @defgroup hbevx_2stage  {hb,sb}evx_2stage:  eig, bisection

            @defgroup stev_driver   --- tridiagonal ---
            @defgroup stev          stev:           eig, QR iteration
            @defgroup stevd         stevd:          eig, divide and conquer
            @defgroup stevr         stevr:          eig, MRRR
            @defgroup stevx         stevx:          eig, bisection
            @defgroup pteqr         pteqr:          eig, positive definite tridiagonal

            @defgroup stebz         stebz:          eig, Kahan
            @defgroup sterf         sterf:          eig, QR iteration
            @defgroup stedc         stedc:          eig, divide and conquer
            @defgroup stegr         stegr:          eig, bisection, see stemr
            @defgroup stein         stein:          eig, inverse iteration
            @defgroup stemr         stemr:          eig, relatively robust representation (RRR)
            @defgroup steqr         steqr:          eig, QR iteration
        @}

        @defgroup hegv_driver_grp   Generalized eig driver, AV = BVΛ, etc.
        @{
            @defgroup hegv_driver   --- full ---
            @defgroup hegv          {he,sy}gv:      eig, QR iteration
            @defgroup hegv_2stage   {he,sy}gv_2stage: eig, QR iteration, 2-stage
            @defgroup hegvd         {he,sy}gvd:     eig, divide and conquer
            @defgroup hegvx         {he,sy}gvx:     eig, bisection

            @defgroup hpgv_driver   --- packed ---
            @defgroup hpgv          {hp,sp}gv:      eig, QR iteration
            @defgroup hpgvd         {hp,sp}gvd:     eig, divide and conquer
            @defgroup hpgvx         {hp,sp}gvx:     eig, bisection

            @defgroup hbgv_driver   --- banded ---
            @defgroup hbgv          {hb,sb}gv:      eig, QR iteration
            @defgroup hbgvd         {hb,sb}gvd:     eig, divide and conquer
            @defgroup hbgvx         {hb,sb}gvx:     eig, bisection
        @}

        @defgroup heev_comp_grp     Eig computational routines
        @{
            @defgroup heev_comp     --- full ---
            @defgroup disna         disna:          eig condition numbers
            @defgroup hetrd         {he,sy}trd:     reduction to tridiagonal
            @defgroup hetd2         {he,sy}td2:     reduction to tridiagonal, level 2
            @defgroup latrd         latrd:          step in hetrd
            @defgroup ungtr         {un,or}gtr:     generate Q from hetrd
            @defgroup unmtr         {un,or}mtr:     multiply by Q from hetrd

            @defgroup hetrd_2stage  {he,sy}trd_2stage: reduction to tridiagonal, 2-stage
            @defgroup hetrd_he2hb   {he,sy}trd_he2hb:   full to band (1st stage)
            @defgroup hetrd_hb2st   {he,sy}trd_hb2st:   band to tridiagonal (2nd stage)
            @defgroup hb2st_kernels {hb,sb}2st_kernels: band to tridiagonal (2nd stage)

            @defgroup lae2          lae2:           2x2 eig, step in steqr, stemr
            @defgroup laesy         laesy:          2x2 eig
            @defgroup laev2         laev2:          2x2 eig
            @defgroup lagtf         lagtf:          LU factor of (T - λI)
            @defgroup lagts         lagts:          LU solve  of (T - λI) x = y

            @defgroup hpev_comp     --- packed ---
            @defgroup hptrd         {hp,sp}trd:     reduction to tridiagonal
            @defgroup upgtr         {up,op}gtr:     generate Q from hetrd
            @defgroup upmtr         {up,op}mtr:     multiply by Q from hptrd

            @defgroup hbev_comp     --- banded ---
            @defgroup hbtrd         {hb,sb}trd:     reduction to tridiagonal
        @}

        @defgroup hegv_comp_grp     Generalized eig computational routines
        @{
            @defgroup hegst         {he,sy}gst:     reduction to standard form
            @defgroup hegs2         {he,sy}gs2:     reduction to standard form, level 2
            @defgroup hpgst         {hp,sp}gst:     reduction to standard form, packed
            @defgroup hbgst         {hb,sb}gst:     reduction to standard form, banded
            @defgroup pbstf         pbstf:          split Cholesky factor, use with hbgst
            @defgroup lag2          lag2:           2x2 eig
        @}

        @defgroup stev_comp_grp     tridiag bisection routines
        @{
            @defgroup laebz         laebz:          counts eigvals <= value
            @defgroup laneg         laneg:          Sturm count
        @}

        @defgroup laed_comp_grp     tridiag divide and conquer (D&C) routines
        @{
            @defgroup laed0         laed0:          D&C step: top level solver
            @defgroup laed1         laed1:          D&C step: merge subproblems
            @defgroup laed2         laed2:          D&C step: deflation
            @defgroup laed3         laed3:          D&C step: secular equation
            @defgroup laed4         laed4:          D&C step: secular equation nonlinear solver
            @defgroup laed5         laed5:          D&C step: secular equation, 2x2
            @defgroup laed6         laed6:          D&C step: secular equation Newton step
            @defgroup lamrg         lamrg:          permutation to merge 2 sorted lists

            @defgroup laed_comp2    --- eig value only or update Q ---
            @defgroup laed7         laed7:          D&C step: merge subproblems
            @defgroup laed8         laed8:          D&C step: deflation
            @defgroup laed9         laed9:          D&C step: secular equation
            @defgroup laeda         laeda:          D&C step: z vector
        @}

        @defgroup larr_comp_grp     tridiag RRR routines
        @{
            @defgroup larra         larra:          step in stemr
            @defgroup larrb         larrb:          step in stemr
            @defgroup larrc         larrc:          step in stemr
            @defgroup larrd         larrd:          step in stemr, tridiag eig
            @defgroup larre         larre:          step in stemr
            @defgroup larrf         larrf:          step in stemr, find relative robust representation (RRR)
            @defgroup larrj         larrj:          step in stemr, refine eigval estimates
            @defgroup larrk         larrk:          step in stemr, compute one eigval
            @defgroup larrr         larrr:          step in stemr, test to do expensive tridiag eig algorithm
            @defgroup larrv         larrv:          eig tridiagonal, step in stemr & stegr
            @defgroup lar1v         lar1v:          step in larrv, hence stemr & stegr
        @}
    @}

    @defgroup svd_top               Singular Value Decomposition (SVD)
    @{
        @defgroup svd_driver_grp    Standard SVD driver, A = UΣV^H
        @{
            @defgroup gesvd_driver  --- full ---
            @defgroup gesvd         gesvd:          SVD, QR iteration
            @defgroup gesvdq        gesvdq:         SVD, QR with pivoting
            @defgroup gesdd         gesdd:          SVD, divide and conquer
            @defgroup gesvdx        gesvdx:         SVD, bisection
            @defgroup gejsv         gejsv:          SVD, Jacobi, high-level
            @defgroup gesvj         gesvj:          SVD, Jacobi, low-level

            @defgroup bdsvd_driver  --- bidiagonal ---
            @defgroup bdsqr         bdsqr:          bidiagonal SVD, QR iteration (dqds)
            @defgroup bdsdc         bdsdc:          bidiagonal SVD, divide and conquer
            @defgroup bdsvdx        bdsvdx:         bidiagonal SVD, bisection
        @}

        @defgroup ggsvd_driver_grp  Generalized SVD driver
        @{
            @defgroup ggsvd3        ggsvd3:         SVD, QR iteration
        @}

        @defgroup gesvd_comp_grp    SVD computational routines
        @{
            @defgroup gebrd         gebrd:          reduction to bidiagonal
            @defgroup gebd2         gebd2:          reduction to bidiagonal, level 2
            @defgroup labrd         labrd:          step in gebrd
            @defgroup gbbrd         gbbrd:          band to bidiagonal
            @defgroup ungbr         {un,or}gbr:     generate Q, P from gebrd
            @defgroup unmbr         {un,or}mbr:     multiply by Q, P from gebrd

            @defgroup gesvd_aux     --- auxiliary routines ---
            @defgroup gsvj0         gsvj0:          step in gesvj
            @defgroup gsvj1         gsvj1:          step in gesvj
            @defgroup las2          las2:           2x2 triangular SVD
            @defgroup lasv2         lasv2:          2x2 triangular SVD
            @defgroup lartgs        lartgs:         generate plane rotation for bidiag SVD
        @}

        @defgroup ggsvd_comp_grp    Generalized SVD computational routines
        @{
            @defgroup ggsvp3        ggsvp3:         step in ggsvd
            @defgroup tgsja         tgsja:          generalized SVD of trapezoidal matrices, step in ggsvd3
            @defgroup lags2         lags2:          2x2 orthogonal factor, step in tgsja
            @defgroup lapll         lapll:          linear dependence of 2 vectors
        @}

        @defgroup lasq_comp_grp     bidiag QR iteration routines
        @{
            @defgroup lasq1         lasq1:          dqds step
            @defgroup lasq2         lasq2:          dqds step
            @defgroup lasq3         lasq3:          dqds step
            @defgroup lasq4         lasq4:          dqds step
            @defgroup lasq5         lasq5:          dqds step
            @defgroup lasq6         lasq6:          dqds step
        @}

        @defgroup lasd_comp_grp     bidiag D&C routines
        @{
            @defgroup lasd0         lasd0:          D&C step: top level solver
            @defgroup lasdt         lasdt:          D&C step: tree
            @defgroup lasd1         lasd1:          D&C step: merge subproblems
            @defgroup lasd2         lasd2:          D&C step: deflation
            @defgroup lasd3         lasd3:          D&C step: secular equation
            @defgroup lasd4         lasd4:          D&C step: secular equation nonlinear solver
            @defgroup lasd5         lasd5:          D&C step: secular equation, 2x2
            @defgroup lasdq         lasdq:          D&C step: leaf using bdsqr

            @defgroup lasd_comp2    --- singular values only or factored form ---
            @defgroup lasda         lasda:          D&C step: top level solver
            @defgroup lasd6         lasd6:          D&C step: merge subproblems
            @defgroup lasd7         lasd7:          D&C step: deflation
            @defgroup lasd8         lasd8:          D&C step: secular equation
        @}
    @}

    @defgroup blas_like_top         BLAS-like
    @{
        @defgroup set_grp           Initialize, copy, convert
        @{
            @defgroup laset         laset:          set matrix
            @defgroup larnv         larnv:          random vector
            @defgroup laruv         laruv:          random uniform vector

            @defgroup lacpy         lacpy:          copy matrix

            @defgroup lacp2         lacp2:          general matrix, convert real to complex
            @defgroup _lag2_        _lag2_:         general matrix, convert double <=> single
            @defgroup _lat2_        _lat2_:         triangular matrix, convert double <=> single

            @defgroup tfttp         tfttp:          triangular matrix, RFP    (tf) to packed (tp)
            @defgroup tfttr         tfttr:          triangular matrix, RFP    (tf) to full   (tr)
            @defgroup tpttf         tpttf:          triangular matrix, packed (tp) to RFP    (tf)
            @defgroup tpttr         tpttr:          triangular matrix, packed (tp) to full   (tr)
            @defgroup trttf         trttf:          triangular matrix, full   (tr) to RFP    (tf)
            @defgroup trttp         trttp:          triangular matrix, full   (tr) to packed (tp)
        @}

        @defgroup norm_grp          Matrix norm
        @{
            @defgroup lange         lange:          general matrix
            @defgroup langb         langb:          general matrix, banded
            @defgroup langt         langt:          general matrix, tridiagonal

            @defgroup lanhs         lanhs:          Hessenberg

            @defgroup lanhe         lan{he,sy}:     Hermitian/symmetric matrix
            @defgroup lanhf         lan{hf,sf}:     Hermitian/symmetric matrix, RFP
            @defgroup lanhp         lan{hp,sp}:     Hermitian/symmetric matrix, packed
            @defgroup lanhb         lan{hb,sb}:     Hermitian/symmetric matrix, banded
            @defgroup lanht         lan{ht,st}:     Hermitian/symmetric matrix, tridiagonal

            @defgroup lantr         lantr:          triangular matrix
            @defgroup lantp         lantp:          triangular matrix, packed
            @defgroup lantb         lantb:          triangular matrix, banded
        @}

        @defgroup blas0_like_grp    Scalar operations
        @{
            @defgroup isnan         isnan:          test for NaN
            @defgroup laisnan       laisnan:        test for NaN, unoptimized
            @defgroup ladiv         ladiv:          complex divide
            @defgroup lapy2         lapy2:          robust sqrt( x^2 + y^2 )
            @defgroup lapy3         lapy3:          robust sqrt( x^2 + y^2 + z^2 )
            @defgroup larmm         larmm:          scale factor to avoid overflow, step in latrs
        @}

        @defgroup blas1_like_grp    Level 1 BLAS-like vector ops
        @{
            @defgroup lacgv         lacgv:          conjugate vector
            @defgroup lasrt         lasrt:          sort vector
            @defgroup lassq         lassq:          sum-of-squares, avoiding over/underflow
            @defgroup rscl          rscl:           scale vector by reciprocal
        @}

        @defgroup blas2_like_grp    Level 2 BLAS-like matrix-vector ops
        @{
            @defgroup ilalc         ilalc:          find non-zero col
            @defgroup ilalr         ilalr:          find non-zero row
            @defgroup lascl         lascl:          scale matrix
            @defgroup la_geamv      la_geamv:       matrix-vector multiply |A| * |x|, general
            @defgroup la_gbamv      la_gbamv:       matrix-vector multiply |A| * |x|, general banded
            @defgroup la_heamv      la_heamv:       matrix-vector multiply |A| * |x|, Hermitian/symmetric
            @defgroup lascl2        lascl2:         diagonal scale matrix, A = D A
            @defgroup larscl2       larscl2:        reciprocal diagonal scale matrix, A = D^{-1} A
            @defgroup la_wwaddw     la_wwaddw:      add to double-double or single-single vector
        @}

        @defgroup blas3_like_grp    Level 3 BLAS-like matrix-matrix ops
        @{
            @defgroup lagtm         lagtm:          tridiagonal matrix-matrix multiply
            @defgroup lacrm         lacrm:          complex * real matrix-matrix multiply
            @defgroup larcm         larcm:          real * complex matrix-matrix multiply
            @defgroup hfrk          hfrk:           Hermitian rank-k update, RFP format
            @defgroup tfsm          tfsm:           triangular-matrix solve, RFP format
        @}
    @}

    @defgroup aux_top               Auxiliary routines
    @{
        @defgroup aux_grp           Other auxiliary routines
        @{
            @defgroup lsame         lsame:          string comparison
            @defgroup lsamen        lsamen:         string comparison
            @defgroup roundup_lwork roundup_lwork:  fix rounding integer to float
            @defgroup second        second:         wall clock timer
        @}

        @defgroup params_grp        Parameters
        @{
            @defgroup lamch         lamch:          machine parameters
            @defgroup lamc1         lamc1:          ??
            @defgroup lamc2         lamc2:          ??
            @defgroup lamc3         lamc3:          ??
            @defgroup lamc4         lamc4:          ??
            @defgroup lamc5         lamc5:          ??
            @defgroup labad         labad:          over/underflow on obsolete pre-IEEE machines
            @defgroup ilaver        ilaver:         LAPACK version
            @defgroup ilaenv        ilaenv:         tuning parameters
            @defgroup ilaenv2stage  ilaenv2stage:   tuning parameters for 2-stage eig
            @defgroup iparam2stage  iparam2stage:   sets parameters for 2-stage eig
            @defgroup ieeeck        ieeeck:         verify inf and NaN are safe
            @defgroup la_constants  la_constants:   Fortran 95 module of constants

            @defgroup blast_aux     --- BLAST constants ---
            @defgroup iladiag       iladiag:        diag      string to BLAST const
            @defgroup ilaprec       ilaprec:        precision string to BLAST const
            @defgroup ilatrans      ilatrans:       trans     string to BLAST const
            @defgroup ilauplo       ilauplo:        uplo      string to BLAST const
            @defgroup la_transtype  la_transtype:   BLAST const to string
        @}

        @defgroup xerbla_grp        Error reporting
        @{
            @defgroup xerbla        xerbla:         error reporting
            @defgroup xerbla_array  xerbla_array:   error reporting, callable from C
        @}
    @}
@}

@defgroup blas_top BLAS
BLAS are defined by three papers:
Basic linear algebra subprograms for {FORTRAN} usage, Lawson et al, 1979.
An extended set of {FORTRAN} basic linear algebra subprograms, Dongarra et al, 1988.
A set of level 3 basic linear algebra subprograms, Dongarra et al, 1990.
Some BLAS-like routines (e.g., csymv, crot, csum1, icmax1) exist in
LAPACK rather than the classic BLAS.
These were extended by the Extra Precision BLAS (XBLAS, not documented here)
https://www.netlib.org/xblas/

@{
        @defgroup scalar_grp        Scalar operations
        @{
            @defgroup abs1          abs1:           | real( x ) | + | imag( x ) |
        @}

        @defgroup blas1_grp         Level 1 BLAS: vector ops
        @{
            @defgroup asum          asum:           sum | real( x_i ) | + | imag( x_i ) |
            @defgroup sum1          sum1:           sum | x_i | (in LAPACK)
            @defgroup axpy          axpy:           y = ax + y
            @defgroup copy          copy:           y = x
            @defgroup dot           dot:            x^H x and x^T x
            @defgroup iamax         iamax:          argmax_i | real( x_i ) | + | imag( x_i ) |
            @defgroup imax1         imax1:          argmax_i | x_i | (in LAPACK)
            @defgroup nrm2          nrm2:           || x ||_2
            @defgroup scal          scal:           x = alpha x
            @defgroup swap          swap:           x <=> y

            @defgroup rot_comp      --- Givens/Jacobi plane rotations ---
            @defgroup rot           rot:            apply plane rotation ([cz]rot in LAPACK)
            @defgroup rotg          rotg:           generate plane rotation (cf. lartg)
            @defgroup rotm          rotm:           apply modified (fast) plane rotation
            @defgroup rotmg         rotmg:          generate modified (fast) plane rotation
        @}

        @defgroup blas2_grp         Level 2 BLAS: matrix-vector ops
        @{
            @defgroup blas2_full    --- full ---
            @defgroup gemv          gemv:           general matrix-vector multiply
            @defgroup ger           ger:            general matrix rank-1 update

            @defgroup hemv          {he,sy}mv:      Hermitian/symmetric matrix-vector multiply ([cz]symv in LAPACK)
            @defgroup her           {he,sy}r:       Hermitian/symmetric rank-1 update
            @defgroup her2          {he,sy}r2:      Hermitian/symmetric rank-2 update

            @defgroup trmv          trmv:           triangular matrix-vector multiply
            @defgroup trsv          trsv:           triangular matrix-vector solve

            @defgroup blas2_packed  --- packed ---
            @defgroup hpmv          {hp,sp}mv:      Hermitian/symmetric matrix-vector multiply
            @defgroup hpr           {hp,sp}r:       Hermitian/symmetric rank-1 update
            @defgroup hpr2          {hp,sp}r2:      Hermitian/symmetric rank-2 update

            @defgroup tpmv          tpmv:           triangular matrix-vector multiply
            @defgroup tpsv          tpsv:           triangular matrix-vector solve

            @defgroup blas2_banded  --- banded ---
            @defgroup gbmv          gbmv:           general matrix-vector multiply

            @defgroup hbmv          {hb,sb}mv:      Hermitian/symmetric matrix-vector multiply

            @defgroup tbmv          tbmv:           triangular matrix-vector multiply
            @defgroup tbsv          tbsv:           triangular matrix-vector solve
        @}

        @defgroup blas3_grp         Level 3 BLAS: matrix-matrix ops
        @{
            @defgroup gemm          gemm:           general matrix-matrix multiply
            @defgroup gemmtr        gemmtr:         general matrix-matrix multiply with triangular output


            @defgroup hemm          {he,sy}mm:      Hermitian/symmetric matrix-matrix multiply
            @defgroup herk          {he,sy}rk:      Hermitian/symmetric rank-k update
            @defgroup her2k         {he,sy}r2k:     Hermitian/symmetric rank-2k update

            @defgroup trmm          trmm:           triangular matrix-matrix multiply
            @defgroup trsm          trsm:           triangular matrix-matrix solve
        @}
@}

**/