This repository has been archived by the owner on May 22, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
clapack.nim
3447 lines (1832 loc) · 535 KB
/
clapack.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#_____________________________________________________________________________
#
# Manually patched after conversion from clapack.h 3.2.1 by c2nim 0.9.4
#
# Emre Safak (c) 2014
#
# Please refer to the source www.netlib.org/clapack/clapack.h when hunting bugs
# Users are also highly encouraged to read http://www.netlib.org/clapack/readme
# Doing so will teach you, for example, that since LAPACK is a Fortran library,
# it column-major order rather than C's row-major order, and therefore that all
# matrices need to be transposed before being passed to any routine here.
#_____________________________________________________________________________
{.warning[SmallLshouldNotBeUsed]: off.}
when not defined(CLAPACK_H):
const CLAPACK_H* = true
type
integer* = clong
address* = cstring
shortint* = cshort
real* = cfloat
doublereal* = cdouble
complex* = object
r*: real
i*: real
doublecomplex* = object
r*: doublereal
i*: doublereal
logical* = clong
shortlogical* = cshort
logical1* = char
integer1* = char
ftnlen* = cshort
L_fp* = ref proc() : logical
FArray* {.unchecked.} [T] = array[0..1, T]
PArray*[T] = ref FArray[T]
{.push nodecl.}
#___________________________________________________________________________
#
# Complex, single precision
#___________________________________________________________________________
proc clapack_caxpy*(n: var integer; ca: ptr complex; cx: ptr complex; incx: var integer; cy: ptr complex; incy: var integer): cint {.importc: "caxpy_".}
proc clapack_ccopy*(n: var integer; cx: ptr complex; incx: var integer; cy: ptr complex; incy: var integer): cint {.importc: "ccopy_".}
proc clapack_cdotc*(ret_val: ptr complex; n: var integer; cx: ptr complex; incx: var integer; cy: ptr complex; incy: var integer): void {.importc: "cdotc_".}
proc clapack_cdotu*(ret_val: ptr complex; n: var integer; cx: ptr complex; incx: var integer; cy: ptr complex; incy: var integer): void {.importc: "cdotu_".}
proc clapack_cgbmv*(trans: var cstring; m: var integer; n: var integer; kl: var integer; ku: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer; beta: ptr complex; y: ptr complex; incy: var integer): cint {.importc: "cgbmv_".}
proc clapack_cgemm*(transa: var cstring; transb: var cstring; m: var integer; n: var integer; k: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; beta: ptr complex; c: ptr complex; ldc: var integer): cint {.importc: "cgemm_".}
proc clapack_cgemv*(trans: var cstring; m: var integer; n: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer; beta: ptr complex; y: ptr complex; incy: var integer): cint {.importc: "cgemv_".}
proc clapack_cgerc*(m: var integer; n: var integer; alpha: ptr complex; x: ptr complex; incx: var integer; y: ptr complex; incy: var integer; a: ptr complex; lda: var integer): cint {.importc: "cgerc_".}
proc clapack_cgeru*(m: var integer; n: var integer; alpha: ptr complex; x: ptr complex; incx: var integer; y: ptr complex; incy: var integer; a: ptr complex; lda: var integer): cint {.importc: "cgeru_".}
proc clapack_chbmv*(uplo: var cstring; n: var integer; k: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer; beta: ptr complex; y: ptr complex; incy: var integer): cint {.importc: "chbmv_".}
proc clapack_chemm*(side: var cstring; uplo: var cstring; m: var integer; n: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; beta: ptr complex; c: ptr complex; ldc: var integer): cint {.importc: "chemm_".}
proc clapack_chemv*(uplo: var cstring; n: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer; beta: ptr complex; y: ptr complex; incy: var integer): cint {.importc: "chemv_".}
proc clapack_cher*(uplo: var cstring; n: var integer; alpha: ptr real; x: ptr complex; incx: var integer; a: ptr complex; lda: var integer): cint {.importc: "cher_".}
proc clapack_cher2*(uplo: var cstring; n: var integer; alpha: ptr complex; x: ptr complex; incx: var integer; y: ptr complex; incy: var integer; a: ptr complex; lda: var integer): cint {.importc: "cher2_".}
proc clapack_cher2k*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; beta: ptr real; c: ptr complex; ldc: var integer): cint {.importc: "cher2k_".}
proc clapack_cherk*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr real; a: ptr complex; lda: var integer; beta: ptr real; c: ptr complex; ldc: var integer): cint {.importc: "cherk_".}
proc clapack_chpmv*(uplo: var cstring; n: var integer; alpha: ptr complex; ap: ptr complex; x: ptr complex; incx: var integer; beta: ptr complex; y: ptr complex; incy: var integer): cint {.importc: "chpmv_".}
proc clapack_chpr*(uplo: var cstring; n: var integer; alpha: ptr real; x: ptr complex; incx: var integer; ap: ptr complex): cint {.importc: "chpr_".}
proc clapack_chpr2*(uplo: var cstring; n: var integer; alpha: ptr complex; x: ptr complex; incx: var integer; y: ptr complex; incy: var integer; ap: ptr complex): cint {.importc: "chpr2_".}
proc clapack_crotg*(ca: ptr complex; cb: ptr complex; c: ptr real; s: ptr complex): cint {.importc: "crotg_".}
proc clapack_cscal*(n: var integer; ca: ptr complex; cx: ptr complex; incx: var integer): cint {.importc: "cscal_".}
proc clapack_csrot*(n: var integer; cx: ptr complex; incx: var integer; cy: ptr complex; incy: var integer; c: ptr real; s: ptr real): cint {.importc: "csrot_".}
proc clapack_csscal*(n: var integer; sa: ptr real; cx: ptr complex; incx: var integer): cint {.importc: "csscal_".}
proc clapack_cswap*(n: var integer; cx: ptr complex; incx: var integer; cy: ptr complex; incy: var integer): cint {.importc: "cswap_".}
proc clapack_csymm*(side: var cstring; uplo: var cstring; m: var integer; n: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; beta: ptr complex; c: ptr complex; ldc: var integer): cint {.importc: "csymm_".}
proc clapack_csyr2k*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; beta: ptr complex; c: ptr complex; ldc: var integer): cint {.importc: "csyr2k_".}
proc clapack_csyrk*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; beta: ptr complex; c: ptr complex; ldc: var integer): cint {.importc: "csyrk_".}
proc clapack_ctbmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; k: var integer; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer): cint {.importc: "ctbmv_".}
proc clapack_ctbsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; k: var integer; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer): cint {.importc: "ctbsv_".}
proc clapack_ctpmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; ap: ptr complex; x: ptr complex; incx: var integer): cint {.importc: "ctpmv_".}
proc clapack_ctpsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; ap: ptr complex; x: ptr complex; incx: var integer): cint {.importc: "ctpsv_".}
proc clapack_ctrmm*(side: var cstring; uplo: var cstring; transa: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer): cint {.importc: "ctrmm_".}
proc clapack_ctrmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer): cint {.importc: "ctrmv_".}
proc clapack_ctrsm*(side: var cstring; uplo: var cstring; transa: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer): cint {.importc: "ctrsm_".}
proc clapack_ctrsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer): cint {.importc: "ctrsv_".}
#___________________________________________________________________________
#
# Real, double precision
#___________________________________________________________________________
proc clapack_dasum*(n: var integer; dx: ptr doublereal; incx: var integer): doublereal {.importc: "dasum_".}
proc clapack_daxpy*(n: var integer; da: ptr doublereal; dx: ptr doublereal; incx: var integer; dy: ptr doublereal; incy: var integer): cint {.importc: "daxpy_".}
proc clapack_dcabs1*(z: ptr doublecomplex): doublereal {.importc: "dcabs1_".}
proc clapack_dcopy*(n: var integer; dx: ptr doublereal; incx: var integer; dy: ptr doublereal; incy: var integer): cint {.importc: "dcopy_".}
proc clapack_ddot*(n: var integer; dx: ptr doublereal; incx: var integer; dy: ptr doublereal; incy: var integer): doublereal {.importc: "ddot_".}
proc clapack_dgbmv*(trans: var cstring; m: var integer; n: var integer; kl: var integer; ku: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; x: ptr doublereal; incx: var integer; beta: ptr doublereal; y: ptr doublereal; incy: var integer): cint {.importc: "dgbmv_".}
proc clapack_dgemm*(transa: var cstring; transb: var cstring; m: var integer; n: var integer; k: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; b: ptr doublereal; ldb: var integer; beta: ptr doublereal; c: ptr doublereal; ldc: var integer): cint {.importc: "dgemm_".}
proc clapack_dgemv*(trans: var cstring; m: var integer; n: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; x: ptr doublereal; incx: var integer; beta: ptr doublereal; y: ptr doublereal; incy: var integer): cint {.importc: "dgemv_".}
proc clapack_dger*(m: var integer; n: var integer; alpha: ptr doublereal; x: ptr doublereal; incx: var integer; y: ptr doublereal; incy: var integer; a: ptr doublereal; lda: var integer): cint {.importc: "dger_".}
proc clapack_dnrm2*(n: var integer; x: ptr doublereal; incx: var integer): doublereal {.importc: "dnrm2_".}
proc clapack_drot*(n: var integer; dx: ptr doublereal; incx: var integer; dy: ptr doublereal; incy: var integer; c: ptr doublereal; s: ptr doublereal): cint {.importc: "drot_".}
proc clapack_drotg*(da: ptr doublereal; db: ptr doublereal; c: ptr doublereal; s: ptr doublereal): cint {.importc: "drotg_".}
proc clapack_drotm*(n: var integer; dx: ptr doublereal; incx: var integer; dy: ptr doublereal; incy: var integer; dparam: ptr doublereal): cint {.importc: "drotm_".}
proc clapack_drotmg*(dd1: ptr doublereal; dd2: ptr doublereal; dx1: ptr doublereal; dy1: ptr doublereal; dparam: ptr doublereal): cint {.importc: "drotmg_".}
proc clapack_dsbmv*(uplo: var cstring; n: var integer; k: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; x: ptr doublereal; incx: var integer; beta: ptr doublereal; y: ptr doublereal; incy: var integer): cint {.importc: "dsbmv_".}
proc clapack_dscal*(n: var integer; da: ptr doublereal; dx: ptr doublereal; incx: var integer): cint {.importc: "dscal_".}
proc clapack_dsdot*(n: var integer; sx: ptr real; incx: var integer; sy: ptr real; incy: var integer): doublereal {.importc: "dsdot_".}
proc clapack_dspmv*(uplo: var cstring; n: var integer; alpha: ptr doublereal; ap: ptr doublereal; x: ptr doublereal; incx: var integer; beta: ptr doublereal; y: ptr doublereal; incy: var integer): cint {.importc: "dspmv_".}
proc clapack_dspr*(uplo: var cstring; n: var integer; alpha: ptr doublereal; x: ptr doublereal; incx: var integer; ap: ptr doublereal): cint {.importc: "dspr_".}
proc clapack_dspr2*(uplo: var cstring; n: var integer; alpha: ptr doublereal; x: ptr doublereal; incx: var integer; y: ptr doublereal; incy: var integer; ap: ptr doublereal): cint {.importc: "dspr2_".}
proc clapack_dswap*(n: var integer; dx: ptr doublereal; incx: var integer; dy: ptr doublereal; incy: var integer): cint {.importc: "dswap_".}
proc clapack_dsymm*(side: var cstring; uplo: var cstring; m: var integer; n: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; b: ptr doublereal; ldb: var integer; beta: ptr doublereal; c: ptr doublereal; ldc: var integer): cint {.importc: "dsymm_".}
proc clapack_dsymv*(uplo: var cstring; n: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; x: ptr doublereal; incx: var integer; beta: ptr doublereal; y: ptr doublereal; incy: var integer): cint {.importc: "dsymv_".}
proc clapack_dsyr*(uplo: var cstring; n: var integer; alpha: ptr doublereal; x: ptr doublereal; incx: var integer; a: ptr doublereal; lda: var integer): cint {.importc: "dsyr_".}
proc clapack_dsyr2*(uplo: var cstring; n: var integer; alpha: ptr doublereal; x: ptr doublereal; incx: var integer; y: ptr doublereal; incy: var integer; a: ptr doublereal; lda: var integer): cint {.importc: "dsyr2_".}
proc clapack_dsyr2k*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; b: ptr doublereal; ldb: var integer; beta: ptr doublereal; c: ptr doublereal; ldc: var integer): cint {.importc: "dsyr2k_".}
proc clapack_dsyrk*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; beta: ptr doublereal; c: ptr doublereal; ldc: var integer): cint {.importc: "dsyrk_".}
proc clapack_dtbmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; k: var integer; a: ptr doublereal; lda: var integer; x: ptr doublereal; incx: var integer): cint {.importc: "dtbmv_".}
proc clapack_dtbsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; k: var integer; a: ptr doublereal; lda: var integer; x: ptr doublereal; incx: var integer): cint {.importc: "dtbsv_".}
proc clapack_dtpmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; ap: ptr doublereal; x: ptr doublereal; incx: var integer): cint {.importc: "dtpmv_".}
proc clapack_dtpsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; ap: ptr doublereal; x: ptr doublereal; incx: var integer): cint {.importc: "dtpsv_".}
proc clapack_dtrmm*(side: var cstring; uplo: var cstring; transa: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; b: ptr doublereal; ldb: var integer): cint {.importc: "dtrmm_".}
proc clapack_dtrmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; a: ptr doublereal; lda: var integer; x: ptr doublereal; incx: var integer): cint {.importc: "dtrmv_".}
proc clapack_dtrsm*(side: var cstring; uplo: var cstring; transa: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr doublereal; a: ptr doublereal; lda: var integer; b: ptr doublereal; ldb: var integer): cint {.importc: "dtrsm_".}
proc clapack_dtrsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; a: ptr doublereal; lda: var integer; x: ptr doublereal; incx: var integer): cint {.importc: "dtrsv_".}
proc clapack_dzasum*(n: var integer; zx: ptr doublecomplex; incx: var integer): doublereal {.importc: "dzasum_".}
proc clapack_dznrm2*(n: var integer; x: ptr doublecomplex; incx: var integer): doublereal {.importc: "dznrm2_".}
#___________________________________________________________________________
#
# Integer
#___________________________________________________________________________
proc clapack_icamax*(n: var integer; cx: ptr complex; incx: var integer): integer {.importc: "icamax_".}
proc clapack_idamax*(n: var integer; dx: ptr doublereal; incx: var integer): integer {.importc: "idamax_".}
proc clapack_isamax*(n: var integer; sx: ptr real; incx: var integer): integer {.importc: "isamax_".}
proc clapack_izamax*(n: var integer; zx: ptr doublecomplex; incx: var integer): integer {.importc: "izamax_".}
proc clapack_lsame*(ca: var cstring; cb: var cstring): logical {.importc: "lsame_".}
proc clapack_xerbla*(srname: var cstring; info: var integer): cint {.importc: "xerbla_".}
proc clapack_xerbla_array*(srname_array: var cstring; srname_len: var integer; info: var integer; srname_array_len: ftnlen): cint {.importc: "xerbla_array__".}
#___________________________________________________________________________
#
# Real, single precision
#___________________________________________________________________________
proc clapack_sasum*(n: var integer; sx: ptr real; incx: var integer): doublereal {.importc: "sasum_".}
proc clapack_saxpy*(n: var integer; sa: ptr real; sx: ptr real; incx: var integer; sy: ptr real; incy: var integer): cint {.importc: "saxpy_".}
proc clapack_scabs1*(z: ptr complex): doublereal {.importc: "scabs1_".}
proc clapack_scasum*(n: var integer; cx: ptr complex; incx: var integer): doublereal {.importc: "scasum_".}
proc clapack_scnrm2*(n: var integer; x: ptr complex; incx: var integer): doublereal {.importc: "scnrm2_".}
proc clapack_scopy*(n: var integer; sx: ptr real; incx: var integer; sy: ptr real; incy: var integer): cint {.importc: "scopy_".}
proc clapack_sdot*(n: var integer; sx: ptr real; incx: var integer; sy: ptr real; incy: var integer): doublereal {.importc: "sdot_".}
proc clapack_sdsdot*(n: var integer; sb: ptr real; sx: ptr real; incx: var integer; sy: ptr real; incy: var integer): doublereal {.importc: "sdsdot_".}
proc clapack_sgbmv*(trans: var cstring; m: var integer; n: var integer; kl: var integer; ku: var integer; alpha: ptr real; a: ptr real; lda: var integer; x: ptr real; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "sgbmv_".}
proc clapack_sgemm*(transa: var cstring; transb: var cstring; m: var integer; n: var integer; k: var integer; alpha: ptr real; a: ptr real; lda: var integer; b: ptr real; ldb: var integer; beta: ptr real; c: ptr real; ldc: var integer): cint {.importc: "sgemm_".}
proc clapack_sgemv*(trans: var cstring; m: var integer; n: var integer; alpha: ptr real; a: ptr real; lda: var integer; x: ptr real; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "sgemv_".}
proc clapack_sger*(m: var integer; n: var integer; alpha: ptr real; x: ptr real; incx: var integer; y: ptr real; incy: var integer; a: ptr real; lda: var integer): cint {.importc: "sger_".}
proc clapack_snrm2*(n: var integer; x: ptr real; incx: var integer): doublereal {.importc: "snrm2_".}
proc clapack_srot*(n: var integer; sx: ptr real; incx: var integer; sy: ptr real; incy: var integer; c: ptr real; s: ptr real): cint {.importc: "srot_".}
proc clapack_srotg*(sa: ptr real; sb: ptr real; c: ptr real; s: ptr real): cint {.importc: "srotg_".}
proc clapack_srotm*(n: var integer; sx: ptr real; incx: var integer; sy: ptr real; incy: var integer; sparam: ptr real): cint {.importc: "srotm_".}
proc clapack_srotmg*(sd1: ptr real; sd2: ptr real; sx1: ptr real; sy1: ptr real; sparam: ptr real): cint {.importc: "srotmg_".}
proc clapack_ssbmv*(uplo: var cstring; n: var integer; k: var integer; alpha: ptr real; a: ptr real; lda: var integer; x: ptr real; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "ssbmv_".}
proc clapack_sscal*(n: var integer; sa: ptr real; sx: ptr real; incx: var integer): cint {.importc: "sscal_".}
proc clapack_sspmv*(uplo: var cstring; n: var integer; alpha: ptr real; ap: ptr real; x: ptr real; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "sspmv_".}
proc clapack_sspr*(uplo: var cstring; n: var integer; alpha: ptr real; x: ptr real; incx: var integer; ap: ptr real): cint {.importc: "sspr_".}
proc clapack_sspr2*(uplo: var cstring; n: var integer; alpha: ptr real; x: ptr real; incx: var integer; y: ptr real; incy: var integer; ap: ptr real): cint {.importc: "sspr2_".}
proc clapack_sswap*(n: var integer; sx: ptr real; incx: var integer; sy: ptr real; incy: var integer): cint {.importc: "sswap_".}
proc clapack_ssymm*(side: var cstring; uplo: var cstring; m: var integer; n: var integer; alpha: ptr real; a: ptr real; lda: var integer; b: ptr real; ldb: var integer; beta: ptr real; c: ptr real; ldc: var integer): cint {.importc: "ssymm_".}
proc clapack_ssymv*(uplo: var cstring; n: var integer; alpha: ptr real; a: ptr real; lda: var integer; x: ptr real; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "ssymv_".}
proc clapack_ssyr*(uplo: var cstring; n: var integer; alpha: ptr real; x: ptr real; incx: var integer; a: ptr real; lda: var integer): cint {.importc: "ssyr_".}
proc clapack_ssyr2*(uplo: var cstring; n: var integer; alpha: ptr real; x: ptr real; incx: var integer; y: ptr real; incy: var integer; a: ptr real; lda: var integer): cint {.importc: "ssyr2_".}
proc clapack_ssyr2k*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr real; a: ptr real; lda: var integer; b: ptr real; ldb: var integer; beta: ptr real; c: ptr real; ldc: var integer): cint {.importc: "ssyr2k_".}
proc clapack_ssyrk*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr real; a: ptr real; lda: var integer; beta: ptr real; c: ptr real; ldc: var integer): cint {.importc: "ssyrk_".}
proc clapack_stbmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; k: var integer; a: ptr real; lda: var integer; x: ptr real; incx: var integer): cint {.importc: "stbmv_".}
proc clapack_stbsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; k: var integer; a: ptr real; lda: var integer; x: ptr real; incx: var integer): cint {.importc: "stbsv_".}
proc clapack_stpmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; ap: ptr real; x: ptr real; incx: var integer): cint {.importc: "stpmv_".}
proc clapack_stpsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; ap: ptr real; x: ptr real; incx: var integer): cint {.importc: "stpsv_".}
proc clapack_strmm*(side: var cstring; uplo: var cstring; transa: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr real; a: ptr real; lda: var integer; b: ptr real; ldb: var integer): cint {.importc: "strmm_".}
proc clapack_strmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; a: ptr real; lda: var integer; x: ptr real; incx: var integer): cint {.importc: "strmv_".}
proc clapack_strsm*(side: var cstring; uplo: var cstring; transa: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr real; a: ptr real; lda: var integer; b: ptr real; ldb: var integer): cint {.importc: "strsm_".}
proc clapack_strsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; a: ptr real; lda: var integer; x: ptr real; incx: var integer): cint {.importc: "strsv_".}
#___________________________________________________________________________
#
# Complex, double precision
#___________________________________________________________________________
proc clapack_zaxpy*(n: var integer; za: ptr doublecomplex; zx: ptr doublecomplex; incx: var integer; zy: ptr doublecomplex; incy: var integer): cint {.importc: "zaxpy_".}
proc clapack_zcopy*(n: var integer; zx: ptr doublecomplex; incx: var integer; zy: ptr doublecomplex; incy: var integer): cint {.importc: "zcopy_".}
# Double Complex
proc clapack_zdotc*(ret_val: ptr doublecomplex; n: var integer; zx: ptr doublecomplex; incx: var integer; zy: ptr doublecomplex; incy: var integer): void {.importc: "zdotc_".}
# Double Complex
proc clapack_zdotu*(ret_val: ptr doublecomplex; n: var integer; zx: ptr doublecomplex; incx: var integer; zy: ptr doublecomplex; incy: var integer): void {.importc: "zdotu_".}
proc clapack_zdrot*(n: var integer; cx: ptr doublecomplex; incx: var integer; cy: ptr doublecomplex; incy: var integer; c: ptr doublereal; s: ptr doublereal): cint {.importc: "zdrot_".}
proc clapack_zdscal*(n: var integer; da: ptr doublereal; zx: ptr doublecomplex; incx: var integer): cint {.importc: "zdscal_".}
proc clapack_zgbmv*(trans: var cstring; m: var integer; n: var integer; kl: var integer; ku: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; x: ptr doublecomplex; incx: var integer; beta: ptr doublecomplex; y: ptr doublecomplex; incy: var integer): cint {.importc: "zgbmv_".}
proc clapack_zgemm*(transa: var cstring; transb: var cstring; m: var integer; n: var integer; k: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; b: ptr doublecomplex; ldb: var integer; beta: ptr doublecomplex; c: ptr doublecomplex; ldc: var integer): cint {.importc: "zgemm_".}
proc clapack_zgemv*(trans: var cstring; m: var integer; n: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; x: ptr doublecomplex; incx: var integer; beta: ptr doublecomplex; y: ptr doublecomplex; incy: var integer): cint {.importc: "zgemv_".}
proc clapack_zgerc*(m: var integer; n: var integer; alpha: ptr doublecomplex; x: ptr doublecomplex; incx: var integer; y: ptr doublecomplex; incy: var integer; a: ptr doublecomplex; lda: var integer): cint {.importc: "zgerc_".}
proc clapack_zgeru*(m: var integer; n: var integer; alpha: ptr doublecomplex; x: ptr doublecomplex; incx: var integer; y: ptr doublecomplex; incy: var integer; a: ptr doublecomplex; lda: var integer): cint {.importc: "zgeru_".}
proc clapack_zhbmv*(uplo: var cstring; n: var integer; k: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; x: ptr doublecomplex; incx: var integer; beta: ptr doublecomplex; y: ptr doublecomplex; incy: var integer): cint {.importc: "zhbmv_".}
proc clapack_zhemm*(side: var cstring; uplo: var cstring; m: var integer; n: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; b: ptr doublecomplex; ldb: var integer; beta: ptr doublecomplex; c: ptr doublecomplex; ldc: var integer): cint {.importc: "zhemm_".}
proc clapack_zhemv*(uplo: var cstring; n: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; x: ptr doublecomplex; incx: var integer; beta: ptr doublecomplex; y: ptr doublecomplex; incy: var integer): cint {.importc: "zhemv_".}
proc clapack_zher*(uplo: var cstring; n: var integer; alpha: ptr doublereal; x: ptr doublecomplex; incx: var integer; a: ptr doublecomplex; lda: var integer): cint {.importc: "zher_".}
proc clapack_zher2*(uplo: var cstring; n: var integer; alpha: ptr doublecomplex; x: ptr doublecomplex; incx: var integer; y: ptr doublecomplex; incy: var integer; a: ptr doublecomplex; lda: var integer): cint {.importc: "zher2_".}
proc clapack_zher2k*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; b: ptr doublecomplex; ldb: var integer; beta: ptr doublereal; c: ptr doublecomplex; ldc: var integer): cint {.importc: "zher2k_".}
proc clapack_zherk*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr doublereal; a: ptr doublecomplex; lda: var integer; beta: ptr doublereal; c: ptr doublecomplex; ldc: var integer): cint {.importc: "zherk_".}
proc clapack_zhpmv*(uplo: var cstring; n: var integer; alpha: ptr doublecomplex; ap: ptr doublecomplex; x: ptr doublecomplex; incx: var integer; beta: ptr doublecomplex; y: ptr doublecomplex; incy: var integer): cint {.importc: "zhpmv_".}
proc clapack_zhpr*(uplo: var cstring; n: var integer; alpha: ptr doublereal; x: ptr doublecomplex; incx: var integer; ap: ptr doublecomplex): cint {.importc: "zhpr_".}
proc clapack_zhpr2*(uplo: var cstring; n: var integer; alpha: ptr doublecomplex; x: ptr doublecomplex; incx: var integer; y: ptr doublecomplex; incy: var integer; ap: ptr doublecomplex): cint {.importc: "zhpr2_".}
proc clapack_zrotg*(ca: ptr doublecomplex; cb: ptr doublecomplex; c: ptr doublereal; s: ptr doublecomplex): cint {.importc: "zrotg_".}
proc clapack_zscal*(n: var integer; za: ptr doublecomplex; zx: ptr doublecomplex; incx: var integer): cint {.importc: "zscal_".}
proc clapack_zswap*(n: var integer; zx: ptr doublecomplex; incx: var integer; zy: ptr doublecomplex; incy: var integer): cint {.importc: "zswap_".}
proc clapack_zsymm*(side: var cstring; uplo: var cstring; m: var integer; n: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; b: ptr doublecomplex; ldb: var integer; beta: ptr doublecomplex; c: ptr doublecomplex; ldc: var integer): cint {.importc: "zsymm_".}
proc clapack_zsyr2k*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; b: ptr doublecomplex; ldb: var integer; beta: ptr doublecomplex; c: ptr doublecomplex; ldc: var integer): cint {.importc: "zsyr2k_".}
proc clapack_zsyrk*(uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; beta: ptr doublecomplex; c: ptr doublecomplex; ldc: var integer): cint {.importc: "zsyrk_".}
proc clapack_ztbmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; k: var integer; a: ptr doublecomplex; lda: var integer; x: ptr doublecomplex; incx: var integer): cint {.importc: "ztbmv_".}
proc clapack_ztbsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; k: var integer; a: ptr doublecomplex; lda: var integer; x: ptr doublecomplex; incx: var integer): cint {.importc: "ztbsv_".}
proc clapack_ztpmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; ap: ptr doublecomplex; x: ptr doublecomplex; incx: var integer): cint {.importc: "ztpmv_".}
proc clapack_ztpsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; ap: ptr doublecomplex; x: ptr doublecomplex; incx: var integer): cint {.importc: "ztpsv_".}
proc clapack_ztrmm*(side: var cstring; uplo: var cstring; transa: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; b: ptr doublecomplex; ldb: var integer): cint {.importc: "ztrmm_".}
proc clapack_ztrmv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; a: ptr doublecomplex; lda: var integer; x: ptr doublecomplex; incx: var integer): cint {.importc: "ztrmv_".}
proc clapack_ztrsm*(side: var cstring; uplo: var cstring; transa: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr doublecomplex; a: ptr doublecomplex; lda: var integer; b: ptr doublecomplex; ldb: var integer): cint {.importc: "ztrsm_".}
proc clapack_ztrsv*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; a: ptr doublecomplex; lda: var integer; x: ptr doublecomplex; incx: var integer): cint {.importc: "ztrsv_".}
#___________________________________________________________________________
#
# Complex, single precision
#___________________________________________________________________________
proc clapack_cbdsqr*(uplo: var cstring; n: var integer; ncvt: var integer; nru: var integer; ncc: var integer; d: ptr real; e: ptr real; vt: ptr complex; ldvt: var integer; u: ptr complex; ldu: var integer; c: ptr complex; ldc: var integer; rwork: ptr real; info: var integer): cint {.importc: "cbdsqr_".}
proc clapack_cgbbrd*(vect: var cstring; m: var integer; n: var integer; ncc: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; d: ptr real; e: ptr real; q: ptr complex; ldq: var integer; pt: ptr complex; ldpt: var integer; c: ptr complex; ldc: var integer; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgbbrd_".}
proc clapack_cgbcon*(norm: var cstring; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; ipiv: var cint; anorm: ptr real; rcond: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgbcon_".}
proc clapack_cgbequ*(m: var integer; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; r: ptr real; c: ptr real; rowcnd: ptr real; colcnd: ptr real; amax: ptr real; info: var integer): cint {.importc: "cgbequ_".}
proc clapack_cgbequb*(m: var integer; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; r: ptr real; c: ptr real; rowcnd: ptr real; colcnd: ptr real; amax: ptr real; info: var integer): cint {.importc: "cgbequb_".}
proc clapack_cgbrfs*(trans: var cstring; n: var integer; kl: var integer; ku: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgbrfs_".}
proc clapack_cgbrfsx*(trans: var cstring; equed: var cstring; n: var integer; kl: var integer; ku: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; ipiv: var cint; r: ptr real; c: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgbrfsx_".}
proc clapack_cgbsv*(n: var integer; kl: var integer; ku: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cgbsv_".}
proc clapack_cgbsvx*(fact: var cstring; trans: var cstring; n: var integer; kl: var integer; ku: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; ipiv: var cint; equed: var cstring; r: ptr real; c: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgbsvx_".}
proc clapack_cgbsvxx*(fact: var cstring; trans: var cstring; n: var integer; kl: var integer; ku: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; ipiv: var cint; equed: var cstring; r: ptr real; c: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; rpvgrw: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgbsvxx_".}
proc clapack_cgbtf2*(m: var integer; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; ipiv: var cint; info: var integer): cint {.importc: "cgbtf2_".}
proc clapack_cgbtrf*(m: var integer; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; ipiv: var cint; info: var integer): cint {.importc: "cgbtrf_".}
proc clapack_cgbtrs*(trans: var cstring; n: var integer; kl: var integer; ku: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cgbtrs_".}
proc clapack_cgebak*(job: var cstring; side: var cstring; n: var integer; ilo: var integer; ihi: var integer; scale: ptr real; m: var integer; v: ptr complex; ldv: var integer; info: var integer): cint {.importc: "cgebak_".}
proc clapack_cgebal*(job: var cstring; n: var integer; a: ptr complex; lda: var integer; ilo: var integer; ihi: var integer; scale: ptr real; info: var integer): cint {.importc: "cgebal_".}
proc clapack_cgebd2*(m: var integer; n: var integer; a: ptr complex; lda: var integer; d: ptr real; e: ptr real; tauq: ptr complex; taup: ptr complex; work: ptr complex; info: var integer): cint {.importc: "cgebd2_".}
proc clapack_cgebrd*(m: var integer; n: var integer; a: ptr complex; lda: var integer; d: ptr real; e: ptr real; tauq: ptr complex; taup: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgebrd_".}
proc clapack_cgecon*(norm: var cstring; n: var integer; a: ptr complex; lda: var integer; anorm: ptr real; rcond: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgecon_".}
proc clapack_cgeequ*(m: var integer; n: var integer; a: ptr complex; lda: var integer; r: ptr real; c: ptr real; rowcnd: ptr real; colcnd: ptr real; amax: ptr real; info: var integer): cint {.importc: "cgeequ_".}
proc clapack_cgeequb*(m: var integer; n: var integer; a: ptr complex; lda: var integer; r: ptr real; c: ptr real; rowcnd: ptr real; colcnd: ptr real; amax: ptr real; info: var integer): cint {.importc: "cgeequb_".}
proc clapack_cgees*(jobvs: var cstring; sort: var cstring; select: L_fp; n: var integer; a: ptr complex; lda: var integer; sdim: var integer; w: ptr complex; vs: ptr complex; ldvs: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; bwork: ptr logical; info: var integer): cint {.importc: "cgees_".}
proc clapack_cgeesx*(jobvs: var cstring; sort: var cstring; select: L_fp; sense: var cstring; n: var integer; a: ptr complex; lda: var integer; sdim: var integer; w: ptr complex; vs: ptr complex; ldvs: var integer; rconde: ptr real; rcondv: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; bwork: ptr logical; info: var integer): cint {.importc: "cgeesx_".}
proc clapack_cgeev*(jobvl: var cstring; jobvr: var cstring; n: var integer; a: ptr complex; lda: var integer; w: ptr complex; vl: ptr complex; ldvl: var integer; vr: ptr complex; ldvr: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cgeev_".}
proc clapack_cgeevx*(balanc: var cstring; jobvl: var cstring; jobvr: var cstring; sense: var cstring; n: var integer; a: ptr complex; lda: var integer; w: ptr complex; vl: ptr complex; ldvl: var integer; vr: ptr complex; ldvr: var integer; ilo: var integer; ihi: var integer; scale: ptr real; abnrm: ptr real; rconde: ptr real; rcondv: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cgeevx_".}
proc clapack_cgegs*(jobvsl: var cstring; jobvsr: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; alpha: ptr complex; beta: ptr complex; vsl: ptr complex; ldvsl: var integer; vsr: ptr complex; ldvsr: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cgegs_".}
proc clapack_cgegv*(jobvl: var cstring; jobvr: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; alpha: ptr complex; beta: ptr complex; vl: ptr complex; ldvl: var integer; vr: ptr complex; ldvr: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cgegv_".}
proc clapack_cgehd2*(n: var integer; ilo: var integer; ihi: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; info: var integer): cint {.importc: "cgehd2_".}
proc clapack_cgehrd*(n: var integer; ilo: var integer; ihi: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgehrd_".}
proc clapack_cgelq2*(m: var integer; n: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; info: var integer): cint {.importc: "cgelq2_".}
proc clapack_cgelqf*(m: var integer; n: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgelqf_".}
proc clapack_cgels*(trans: var cstring; m: var integer; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgels_".}
proc clapack_cgelsd*(m: var integer; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; s: ptr real; rcond: ptr real; rank: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; iwork: var integer; info: var integer): cint {.importc: "cgelsd_".}
proc clapack_cgelss*(m: var integer; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; s: ptr real; rcond: ptr real; rank: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cgelss_".}
proc clapack_cgelsx*(m: var integer; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; jpvt: var integer; rcond: ptr real; rank: var integer; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgelsx_".}
proc clapack_cgelsy*(m: var integer; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; jpvt: var integer; rcond: ptr real; rank: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cgelsy_".}
proc clapack_cgeql2*(m: var integer; n: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; info: var integer): cint {.importc: "cgeql2_".}
proc clapack_cgeqlf*(m: var integer; n: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgeqlf_".}
proc clapack_cgeqp3*(m: var integer; n: var integer; a: ptr complex; lda: var integer; jpvt: var integer; tau: ptr complex; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cgeqp3_".}
proc clapack_cgeqpf*(m: var integer; n: var integer; a: ptr complex; lda: var integer; jpvt: var integer; tau: ptr complex; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgeqpf_".}
proc clapack_cgeqr2*(m: var integer; n: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; info: var integer): cint {.importc: "cgeqr2_".}
proc clapack_cgeqrf*(m: var integer; n: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgeqrf_".}
proc clapack_cgerfs*(trans: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgerfs_".}
proc clapack_cgerfsx*(trans: var cstring; equed: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; r: ptr real; c: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgerfsx_".}
proc clapack_cgerq2*(m: var integer; n: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; info: var integer): cint {.importc: "cgerq2_".}
proc clapack_cgerqf*(m: var integer; n: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgerqf_".}
proc clapack_cgesc2*(n: var integer; a: ptr complex; lda: var integer; rhs: ptr complex; ipiv: var cint; jpiv: var cint; scale: ptr real): cint {.importc: "cgesc2_".}
proc clapack_cgesdd*(jobz: var cstring; m: var integer; n: var integer; a: ptr complex; lda: var integer; s: ptr real; u: ptr complex; ldu: var integer; vt: ptr complex; ldvt: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; iwork: var integer; info: var integer): cint {.importc: "cgesdd_".}
proc clapack_cgesv*(n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cgesv_".}
proc clapack_cgesvd*(jobu: var cstring; jobvt: var cstring; m: var integer; n: var integer; a: ptr complex; lda: var integer; s: ptr real; u: ptr complex; ldu: var integer; vt: ptr complex; ldvt: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cgesvd_".}
proc clapack_cgesvx*(fact: var cstring; trans: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; equed: var cstring; r: ptr real; c: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgesvx_".}
proc clapack_cgesvxx*(fact: var cstring; trans: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; equed: var cstring; r: ptr real; c: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; rpvgrw: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgesvxx_".}
proc clapack_cgetc2*(n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; jpiv: var cint; info: var integer): cint {.importc: "cgetc2_".}
proc clapack_cgetf2*(m: var integer; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; info: var integer): cint {.importc: "cgetf2_".}
proc clapack_cgetrf*(m: var integer; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; info: var integer): cint {.importc: "cgetrf_".}
proc clapack_cgetri*(n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgetri_".}
proc clapack_cgetrs*(trans: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cgetrs_".}
proc clapack_cggbak*(job: var cstring; side: var cstring; n: var integer; ilo: var integer; ihi: var integer; lscale: ptr real; rscale: ptr real; m: var integer; v: ptr complex; ldv: var integer; info: var integer): cint {.importc: "cggbak_".}
proc clapack_cggbal*(job: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; ilo: var integer; ihi: var integer; lscale: ptr real; rscale: ptr real; work: ptr real; info: var integer): cint {.importc: "cggbal_".}
proc clapack_cgges*(jobvsl: var cstring; jobvsr: var cstring; sort: var cstring; selctg: L_fp; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; sdim: var integer; alpha: ptr complex; beta: ptr complex; vsl: ptr complex; ldvsl: var integer; vsr: ptr complex; ldvsr: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; bwork: ptr logical; info: var integer): cint {.importc: "cgges_".}
proc clapack_cggesx*(jobvsl: var cstring; jobvsr: var cstring; sort: var cstring; selctg: L_fp; sense: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; sdim: var integer; alpha: ptr complex; beta: ptr complex; vsl: ptr complex; ldvsl: var integer; vsr: ptr complex; ldvsr: var integer; rconde: ptr real; rcondv: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; iwork: var integer; liwork: var integer; bwork: ptr logical; info: var integer): cint {.importc: "cggesx_".}
proc clapack_cggev*(jobvl: var cstring; jobvr: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; alpha: ptr complex; beta: ptr complex; vl: ptr complex; ldvl: var integer; vr: ptr complex; ldvr: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cggev_".}
proc clapack_cggevx*(balanc: var cstring; jobvl: var cstring; jobvr: var cstring; sense: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; alpha: ptr complex; beta: ptr complex; vl: ptr complex; ldvl: var integer; vr: ptr complex; ldvr: var integer; ilo: var integer; ihi: var integer; lscale: ptr real; rscale: ptr real; abnrm: ptr real; bbnrm: ptr real; rconde: ptr real; rcondv: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; iwork: var integer; bwork: ptr logical; info: var integer): cint {.importc: "cggevx_".}
proc clapack_cggglm*(n: var integer; m: var integer; p: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; d: ptr complex; x: ptr complex; y: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cggglm_".}
proc clapack_cgghrd*(compq: var cstring; compz: var cstring; n: var integer; ilo: var integer; ihi: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; q: ptr complex; ldq: var integer; z: ptr complex; ldz: var integer; info: var integer): cint {.importc: "cgghrd_".}
proc clapack_cgglse*(m: var integer; n: var integer; p: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; c: ptr complex; d: ptr complex; x: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cgglse_".}
proc clapack_cggqrf*(n: var integer; m: var integer; p: var integer; a: ptr complex; lda: var integer; taua: ptr complex; b: ptr complex; ldb: var integer; taub: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cggqrf_".}
proc clapack_cggrqf*(m: var integer; p: var integer; n: var integer; a: ptr complex; lda: var integer; taua: ptr complex; b: ptr complex; ldb: var integer; taub: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "cggrqf_".}
proc clapack_cggsvd*(jobu: var cstring; jobv: var cstring; jobq: var cstring; m: var integer; n: var integer; p: var integer; k: var integer; l: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; alpha: ptr real; beta: ptr real; u: ptr complex; ldu: var integer; v: ptr complex; ldv: var integer; q: ptr complex; ldq: var integer; work: ptr complex; rwork: ptr real; iwork: var integer; info: var integer): cint {.importc: "cggsvd_".}
proc clapack_cggsvp*(jobu: var cstring; jobv: var cstring; jobq: var cstring; m: var integer; p: var integer; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; tola: ptr real; tolb: ptr real; k: var integer; l: var integer; u: ptr complex; ldu: var integer; v: ptr complex; ldv: var integer; q: ptr complex; ldq: var integer; iwork: var integer; rwork: ptr real; tau: ptr complex; work: ptr complex; info: var integer): cint {.importc: "cggsvp_".}
proc clapack_cgtcon*(norm: var cstring; n: var integer; dl: ptr complex; d: ptr complex; du: ptr complex; du2: ptr complex; ipiv: var cint; anorm: ptr real; rcond: ptr real; work: ptr complex; info: var integer): cint {.importc: "cgtcon_".}
proc clapack_cgtrfs*(trans: var cstring; n: var integer; nrhs: var integer; dl: ptr complex; d: ptr complex; du: ptr complex; dlf: ptr complex; df: ptr complex; duf: ptr complex; du2: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgtrfs_".}
proc clapack_cgtsv*(n: var integer; nrhs: var integer; dl: ptr complex; d: ptr complex; du: ptr complex; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cgtsv_".}
proc clapack_cgtsvx*(fact: var cstring; trans: var cstring; n: var integer; nrhs: var integer; dl: ptr complex; d: ptr complex; du: ptr complex; dlf: ptr complex; df: ptr complex; duf: ptr complex; du2: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cgtsvx_".}
proc clapack_cgttrf*(n: var integer; dl: ptr complex; d: ptr complex; du: ptr complex; du2: ptr complex; ipiv: var cint; info: var integer): cint {.importc: "cgttrf_".}
proc clapack_cgttrs*(trans: var cstring; n: var integer; nrhs: var integer; dl: ptr complex; d: ptr complex; du: ptr complex; du2: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cgttrs_".}
proc clapack_cgtts2*(itrans: var integer; n: var integer; nrhs: var integer; dl: ptr complex; d: ptr complex; du: ptr complex; du2: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer): cint {.importc: "cgtts2_".}
proc clapack_chbev*(jobz: var cstring; uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "chbev_".}
proc clapack_chbevd*(jobz: var cstring; uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; lrwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "chbevd_".}
proc clapack_chbevx*(jobz: var cstring; range: var cstring; uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; q: ptr complex; ldq: var integer; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; abstol: ptr real; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; rwork: ptr real; iwork: var integer; ifail: var integer; info: var integer): cint {.importc: "chbevx_".}
proc clapack_chbgst*(vect: var cstring; uplo: var cstring; n: var integer; ka: var integer; kb: var integer; ab: ptr complex; ldab: var integer; bb: ptr complex; ldbb: var integer; x: ptr complex; ldx: var integer; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "chbgst_".}
proc clapack_chbgv*(jobz: var cstring; uplo: var cstring; n: var integer; ka: var integer; kb: var integer; ab: ptr complex; ldab: var integer; bb: ptr complex; ldbb: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "chbgv_".}
proc clapack_chbgvd*(jobz: var cstring; uplo: var cstring; n: var integer; ka: var integer; kb: var integer; ab: ptr complex; ldab: var integer; bb: ptr complex; ldbb: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; lrwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "chbgvd_".}
proc clapack_chbgvx*(jobz: var cstring; range: var cstring; uplo: var cstring; n: var integer; ka: var integer; kb: var integer; ab: ptr complex; ldab: var integer; bb: ptr complex; ldbb: var integer; q: ptr complex; ldq: var integer; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; abstol: ptr real; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; rwork: ptr real; iwork: var integer; ifail: var integer; info: var integer): cint {.importc: "chbgvx_".}
proc clapack_chbtrd*(vect: var cstring; uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; d: ptr real; e: ptr real; q: ptr complex; ldq: var integer; work: ptr complex; info: var integer): cint {.importc: "chbtrd_".}
proc clapack_checon*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; anorm: ptr real; rcond: ptr real; work: ptr complex; info: var integer): cint {.importc: "checon_".}
proc clapack_cheequb*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; s: ptr real; scond: ptr real; amax: ptr real; work: ptr complex; info: var integer): cint {.importc: "cheequb_".}
proc clapack_cheev*(jobz: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; w: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "cheev_".}
proc clapack_cheevd*(jobz: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; w: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; lrwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "cheevd_".}
proc clapack_cheevr*(jobz: var cstring; range: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; abstol: ptr real; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; isuppz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; lrwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "cheevr_".}
proc clapack_cheevx*(jobz: var cstring; range: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; abstol: ptr real; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; iwork: var integer; ifail: var integer; info: var integer): cint {.importc: "cheevx_".}
proc clapack_chegs2*(itype: var integer; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "chegs2_".}
proc clapack_chegst*(itype: var integer; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "chegst_".}
proc clapack_chegv*(itype: var integer; jobz: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; w: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "chegv_".}
proc clapack_chegvd*(itype: var integer; jobz: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; w: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; lrwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "chegvd_".}
proc clapack_chegvx*(itype: var integer; jobz: var cstring; range: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; abstol: ptr real; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; iwork: var integer; ifail: var integer; info: var integer): cint {.importc: "chegvx_".}
proc clapack_cherfs*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cherfs_".}
proc clapack_cherfsx*(uplo: var cstring; equed: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cherfsx_".}
proc clapack_chesv*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "chesv_".}
proc clapack_chesvx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "chesvx_".}
proc clapack_chesvxx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; equed: var cstring; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; rpvgrw: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "chesvxx_".}
proc clapack_chetd2*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; d: ptr real; e: ptr real; tau: ptr complex; info: var integer): cint {.importc: "chetd2_".}
proc clapack_chetf2*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; info: var integer): cint {.importc: "chetf2_".}
proc clapack_chetrd*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; d: ptr real; e: ptr real; tau: ptr complex; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "chetrd_".}
proc clapack_chetrf*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "chetrf_".}
proc clapack_chetri*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; work: ptr complex; info: var integer): cint {.importc: "chetri_".}
proc clapack_chetrs*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "chetrs_".}
proc clapack_chfrk*(transr: var cstring; uplo: var cstring; trans: var cstring; n: var integer; k: var integer; alpha: ptr real; a: ptr complex; lda: var integer; beta: ptr real; c: ptr complex): cint {.importc: "chfrk_".}
proc clapack_chgeqz*(job: var cstring; compq: var cstring; compz: var cstring; n: var integer; ilo: var integer; ihi: var integer; h: ptr complex; ldh: var integer; t: ptr complex; ldt: var integer; alpha: ptr complex; beta: ptr complex; q: ptr complex; ldq: var integer; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "chgeqz_".}
# Character
proc clapack_chla_transtype*(ret_val: var cstring; ret_val_len: ftnlen; trans: var integer): void {.importc: "chla_transtype__".}
proc clapack_chpcon*(uplo: var cstring; n: var integer; ap: ptr complex; ipiv: var cint; anorm: ptr real; rcond: ptr real; work: ptr complex; info: var integer): cint {.importc: "chpcon_".}
proc clapack_chpev*(jobz: var cstring; uplo: var cstring; n: var integer; ap: ptr complex; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "chpev_".}
proc clapack_chpevd*(jobz: var cstring; uplo: var cstring; n: var integer; ap: ptr complex; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; lrwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "chpevd_".}
proc clapack_chpevx*(jobz: var cstring; range: var cstring; uplo: var cstring; n: var integer; ap: ptr complex; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; abstol: ptr real; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; rwork: ptr real; iwork: var integer; ifail: var integer; info: var integer): cint {.importc: "chpevx_".}
proc clapack_chpgst*(itype: var integer; uplo: var cstring; n: var integer; ap: ptr complex; bp: ptr complex; info: var integer): cint {.importc: "chpgst_".}
proc clapack_chpgv*(itype: var integer; jobz: var cstring; uplo: var cstring; n: var integer; ap: ptr complex; bp: ptr complex; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "chpgv_".}
proc clapack_chpgvd*(itype: var integer; jobz: var cstring; uplo: var cstring; n: var integer; ap: ptr complex; bp: ptr complex; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; lrwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "chpgvd_".}
proc clapack_chpgvx*(itype: var integer; jobz: var cstring; range: var cstring; uplo: var cstring; n: var integer; ap: ptr complex; bp: ptr complex; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; abstol: ptr real; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; rwork: ptr real; iwork: var integer; ifail: var integer; info: var integer): cint {.importc: "chpgvx_".}
proc clapack_chprfs*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; afp: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "chprfs_".}
proc clapack_chpsv*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "chpsv_".}
proc clapack_chpsvx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; afp: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "chpsvx_".}
proc clapack_chptrd*(uplo: var cstring; n: var integer; ap: ptr complex; d: ptr real; e: ptr real; tau: ptr complex; info: var integer): cint {.importc: "chptrd_".}
proc clapack_chptrf*(uplo: var cstring; n: var integer; ap: ptr complex; ipiv: var cint; info: var integer): cint {.importc: "chptrf_".}
proc clapack_chptri*(uplo: var cstring; n: var integer; ap: ptr complex; ipiv: var cint; work: ptr complex; info: var integer): cint {.importc: "chptri_".}
proc clapack_chptrs*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "chptrs_".}
proc clapack_chsein*(side: var cstring; eigsrc: var cstring; initv: var cstring; select: ptr logical; n: var integer; h: ptr complex; ldh: var integer; w: ptr complex; vl: ptr complex; ldvl: var integer; vr: ptr complex; ldvr: var integer; mm: var integer; m: var integer; work: ptr complex; rwork: ptr real; ifaill: var integer; ifailr: var integer; info: var integer): cint {.importc: "chsein_".}
proc clapack_chseqr*(job: var cstring; compz: var cstring; n: var integer; ilo: var integer; ihi: var integer; h: ptr complex; ldh: var integer; w: ptr complex; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "chseqr_".}
proc clapack_cla_gbamv*(trans: var integer; m: var integer; n: var integer; kl: var integer; ku: var integer; alpha: ptr real; ab: ptr complex; ldab: var integer; x: ptr complex; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "cla_gbamv__".}
proc clapack_cla_gbrcond_c*(trans: var cstring; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; ipiv: var cint; c: ptr real; capply: ptr logical; info: var integer; work: ptr complex; rwork: ptr real; trans_len: ftnlen): doublereal {.importc: "cla_gbrcond_c__".}
proc clapack_cla_gbrcond_x*(trans: var cstring; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; ipiv: var cint; x: ptr complex; info: var integer; work: ptr complex; rwork: ptr real; trans_len: ftnlen): doublereal {.importc: "cla_gbrcond_x__".}
proc clapack_cla_gbrfsx_extended*(prec_type: var integer; trans_type: var integer; n: var integer; kl: var integer; ku: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; ipiv: var cint; colequ: ptr logical; c: ptr real; b: ptr complex; ldb: var integer; y: ptr complex; ldy: var integer; berr_out: ptr real; n_norms: var integer; errs_n: ptr real; errs_c: ptr real; res: ptr complex; ayb: ptr real; dy: ptr complex; y_tail: ptr complex; rcond: ptr real; ithresh: var integer; rthresh: ptr real; dz_ub: ptr real; ignore_cwise: ptr logical; info: var integer): cint {.importc: "cla_gbrfsx_extended__".}
proc clapack_cla_gbrpvgrw*(n: var integer; kl: var integer; ku: var integer; ncols: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer): doublereal {.importc: "cla_gbrpvgrw__".}
proc clapack_cla_geamv*(trans: var integer; m: var integer; n: var integer; alpha: ptr real; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "cla_geamv__".}
proc clapack_cla_gercond_c*(trans: var cstring; n: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; c: ptr real; capply: ptr logical; info: var integer; work: ptr complex; rwork: ptr real; trans_len: ftnlen): doublereal {.importc: "cla_gercond_c__".}
proc clapack_cla_gercond_x*(trans: var cstring; n: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; x: ptr complex; info: var integer; work: ptr complex; rwork: ptr real; trans_len: ftnlen): doublereal {.importc: "cla_gercond_x__".}
proc clapack_cla_gerfsx_extended*(prec_type: var integer; trans_type: var integer; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; colequ: ptr logical; c: ptr real; b: ptr complex; ldb: var integer; y: ptr complex; ldy: var integer; berr_out: ptr real; n_norms: var integer; errs_n: ptr real; errs_c: ptr real; res: ptr complex; ayb: ptr real; dy: ptr complex; y_tail: ptr complex; rcond: ptr real; ithresh: var integer; rthresh: ptr real; dz_ub: ptr real; ignore_cwise: ptr logical; info: var integer): cint {.importc: "cla_gerfsx_extended__".}
proc clapack_cla_heamv*(uplo: var integer; n: var integer; alpha: ptr real; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "cla_heamv__".}
proc clapack_cla_hercond_c*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; c: ptr real; capply: ptr logical; info: var integer; work: ptr complex; rwork: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_hercond_c__".}
proc clapack_cla_hercond_x*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; x: ptr complex; info: var integer; work: ptr complex; rwork: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_hercond_x__".}
proc clapack_cla_herfsx_extended*(prec_type: var integer; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; colequ: ptr logical; c: ptr real; b: ptr complex; ldb: var integer; y: ptr complex; ldy: var integer; berr_out: ptr real; n_norms: var integer; errs_n: ptr real; errs_c: ptr real; res: ptr complex; ayb: ptr real; dy: ptr complex; y_tail: ptr complex; rcond: ptr real; ithresh: var integer; rthresh: ptr real; dz_ub: ptr real; ignore_cwise: ptr logical; info: var integer; uplo_len: ftnlen): cint {.importc: "cla_herfsx_extended__".}
proc clapack_cla_herpvgrw*(uplo: var cstring; n: var integer; info: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; work: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_herpvgrw__".}
proc clapack_cla_lin_berr*(n: var integer; nz: var integer; nrhs: var integer; res: ptr complex; ayb: ptr real; berr: ptr real): cint {.importc: "cla_lin_berr__".}
proc clapack_cla_porcond_c*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; c: ptr real; capply: ptr logical; info: var integer; work: ptr complex; rwork: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_porcond_c__".}
proc clapack_cla_porcond_x*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; x: ptr complex; info: var integer; work: ptr complex; rwork: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_porcond_x__".}
proc clapack_cla_porfsx_extended*(prec_type: var integer; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; colequ: ptr logical; c: ptr real; b: ptr complex; ldb: var integer; y: ptr complex; ldy: var integer; berr_out: ptr real; n_norms: var integer; errs_n: ptr real; errs_c: ptr real; res: ptr complex; ayb: ptr real; dy: ptr complex; y_tail: ptr complex; rcond: ptr real; ithresh: var integer; rthresh: ptr real; dz_ub: ptr real; ignore_cwise: ptr logical; info: var integer; uplo_len: ftnlen): cint {.importc: "cla_porfsx_extended__".}
proc clapack_cla_porpvgrw*(uplo: var cstring; ncols: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; work: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_porpvgrw__".}
proc clapack_cla_rpvgrw*(n: var integer; ncols: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer): doublereal {.importc: "cla_rpvgrw__".}
proc clapack_cla_syamv*(uplo: var integer; n: var integer; alpha: ptr real; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer; beta: ptr real; y: ptr real; incy: var integer): cint {.importc: "cla_syamv__".}
proc clapack_cla_syrcond_c*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; c: ptr real; capply: ptr logical; info: var integer; work: ptr complex; rwork: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_syrcond_c__".}
proc clapack_cla_syrcond_x*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; x: ptr complex; info: var integer; work: ptr complex; rwork: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_syrcond_x__".}
proc clapack_cla_syrfsx_extended*(prec_type: var integer; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; colequ: ptr logical; c: ptr real; b: ptr complex; ldb: var integer; y: ptr complex; ldy: var integer; berr_out: ptr real; n_norms: var integer; errs_n: ptr real; errs_c: ptr real; res: ptr complex; ayb: ptr real; dy: ptr complex; y_tail: ptr complex; rcond: ptr real; ithresh: var integer; rthresh: ptr real; dz_ub: ptr real; ignore_cwise: ptr logical; info: var integer; uplo_len: ftnlen): cint {.importc: "cla_syrfsx_extended__".}
proc clapack_cla_syrpvgrw*(uplo: var cstring; n: var integer; info: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; work: ptr real; uplo_len: ftnlen): doublereal {.importc: "cla_syrpvgrw__".}
proc clapack_cla_wwaddw*(n: var integer; x: ptr complex; y: ptr complex; w: ptr complex): cint {.importc: "cla_wwaddw__".}
proc clapack_clabrd*(m: var integer; n: var integer; nb: var integer; a: ptr complex; lda: var integer; d: ptr real; e: ptr real; tauq: ptr complex; taup: ptr complex; x: ptr complex; ldx: var integer; y: ptr complex; ldy: var integer): cint {.importc: "clabrd_".}
proc clapack_clacgv*(n: var integer; x: ptr complex; incx: var integer): cint {.importc: "clacgv_".}
proc clapack_clacn2*(n: var integer; v: ptr complex; x: ptr complex; est: ptr real; kase: var integer; isave: var integer): cint {.importc: "clacn2_".}
proc clapack_clacon*(n: var integer; v: ptr complex; x: ptr complex; est: ptr real; kase: var integer): cint {.importc: "clacon_".}
proc clapack_clacp2*(uplo: var cstring; m: var integer; n: var integer; a: ptr real; lda: var integer; b: ptr complex; ldb: var integer): cint {.importc: "clacp2_".}
proc clapack_clacpy*(uplo: var cstring; m: var integer; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer): cint {.importc: "clacpy_".}
proc clapack_clacrm*(m: var integer; n: var integer; a: ptr complex; lda: var integer; b: ptr real; ldb: var integer; c: ptr complex; ldc: var integer; rwork: ptr real): cint {.importc: "clacrm_".}
proc clapack_clacrt*(n: var integer; cx: ptr complex; incx: var integer; cy: ptr complex; incy: var integer; c: ptr complex; s: ptr complex): cint {.importc: "clacrt_".}
# Complex
proc clapack_cladiv*(ret_val: ptr complex; x: ptr complex; y: ptr complex): void {.importc: "cladiv_".}
proc clapack_claed0*(qsiz: var integer; n: var integer; d: ptr real; e: ptr real; q: ptr complex; ldq: var integer; qstore: ptr complex; ldqs: var integer; rwork: ptr real; iwork: var integer; info: var integer): cint {.importc: "claed0_".}
proc clapack_claed7*(n: var integer; cutpnt: var integer; qsiz: var integer; tlvls: var integer; curlvl: var integer; curpbm: var integer; d: ptr real; q: ptr complex; ldq: var integer; rho: ptr real; indxq: var integer; qstore: ptr real; qptr: var integer; prmptr: var integer; perm: var integer; givptr: var integer; givcol: var integer; givnum: ptr real; work: ptr complex; rwork: ptr real; iwork: var integer; info: var integer): cint {.importc: "claed7_".}
proc clapack_claed8*(k: var integer; n: var integer; qsiz: var integer; q: ptr complex; ldq: var integer; d: ptr real; rho: ptr real; cutpnt: var integer; z: ptr real; dlamda: ptr real; q2: ptr complex; ldq2: var integer; w: ptr real; indxp: var integer; indx: var integer; indxq: var integer; perm: var integer; givptr: var integer; givcol: var integer; givnum: ptr real; info: var integer): cint {.importc: "claed8_".}
proc clapack_claein*(rightv: ptr logical; noinit: ptr logical; n: var integer; h: ptr complex; ldh: var integer; w: ptr complex; v: ptr complex; b: ptr complex; ldb: var integer; rwork: ptr real; eps3: ptr real; smlnum: ptr real; info: var integer): cint {.importc: "claein_".}
proc clapack_claesy*(a: ptr complex; b: ptr complex; c: ptr complex; rt1: ptr complex; rt2: ptr complex; evscal: ptr complex; cs1: ptr complex; sn1: ptr complex): cint {.importc: "claesy_".}
proc clapack_claev2*(a: ptr complex; b: ptr complex; c: ptr complex; rt1: ptr real; rt2: ptr real; cs1: ptr real; sn1: ptr complex): cint {.importc: "claev2_".}
proc clapack_clag2z*(m: var integer; n: var integer; sa: ptr complex; ldsa: var integer; a: ptr doublecomplex; lda: var integer; info: var integer): cint {.importc: "clag2z_".}
proc clapack_clags2*(upper: ptr logical; a1: ptr real; a2: ptr complex; a3: ptr real; b1: ptr real; b2: ptr complex; b3: ptr real; csu: ptr real; snu: ptr complex; csv: ptr real; snv: ptr complex; csq: ptr real; snq: ptr complex): cint {.importc: "clags2_".}
proc clapack_clagtm*(trans: var cstring; n: var integer; nrhs: var integer; alpha: ptr real; dl: ptr complex; d: ptr complex; du: ptr complex; x: ptr complex; ldx: var integer; beta: ptr real; b: ptr complex; ldb: var integer): cint {.importc: "clagtm_".}
proc clapack_clahef*(uplo: var cstring; n: var integer; nb: var integer; kb: var integer; a: ptr complex; lda: var integer; ipiv: var cint; w: ptr complex; ldw: var integer; info: var integer): cint {.importc: "clahef_".}
proc clapack_clahqr*(wantt: ptr logical; wantz: ptr logical; n: var integer; ilo: var integer; ihi: var integer; h: ptr complex; ldh: var integer; w: ptr complex; iloz: var integer; ihiz: var integer; z: ptr complex; ldz: var integer; info: var integer): cint {.importc: "clahqr_".}
proc clapack_clahr2*(n: var integer; k: var integer; nb: var integer; a: ptr complex; lda: var integer; tau: ptr complex; t: ptr complex; ldt: var integer; y: ptr complex; ldy: var integer): cint {.importc: "clahr2_".}
proc clapack_clahrd*(n: var integer; k: var integer; nb: var integer; a: ptr complex; lda: var integer; tau: ptr complex; t: ptr complex; ldt: var integer; y: ptr complex; ldy: var integer): cint {.importc: "clahrd_".}
proc clapack_claic1*(job: var integer; j: var integer; x: ptr complex; sest: ptr real; w: ptr complex; gamma: ptr complex; sestpr: ptr real; s: ptr complex; c: ptr complex): cint {.importc: "claic1_".}
proc clapack_clals0*(icompq: var integer; nl: var integer; nr: var integer; sqre: var integer; nrhs: var integer; b: ptr complex; ldb: var integer; bx: ptr complex; ldbx: var integer; perm: var integer; givptr: var integer; givcol: var integer; ldgcol: var integer; givnum: ptr real; ldgnum: var integer; poles: ptr real; difl: ptr real; difr: ptr real; z: ptr real; k: var integer; c: ptr real; s: ptr real; rwork: ptr real; info: var integer): cint {.importc: "clals0_".}
proc clapack_clalsa*(icompq: var integer; smlsiz: var integer; n: var integer; nrhs: var integer; b: ptr complex; ldb: var integer; bx: ptr complex; ldbx: var integer; u: ptr real; ldu: var integer; vt: ptr real; k: var integer; difl: ptr real; difr: ptr real; z: ptr real; poles: ptr real; givptr: var integer; givcol: var integer; ldgcol: var integer; perm: var integer; givnum: ptr real; c: ptr real; s: ptr real; rwork: ptr real; iwork: var integer; info: var integer): cint {.importc: "clalsa_".}
proc clapack_clalsd*(uplo: var cstring; smlsiz: var integer; n: var integer; nrhs: var integer; d: ptr real; e: ptr real; b: ptr complex; ldb: var integer; rcond: ptr real; rank: var integer; work: ptr complex; rwork: ptr real; iwork: var integer; info: var integer): cint {.importc: "clalsd_".}
proc clapack_clangb*(norm: var cstring; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; work: ptr real): doublereal {.importc: "clangb_".}
proc clapack_clange*(norm: var cstring; m: var integer; n: var integer; a: ptr complex; lda: var integer; work: ptr real): doublereal {.importc: "clange_".}
proc clapack_clangt*(norm: var cstring; n: var integer; dl: ptr complex; d: ptr complex; du: ptr complex): doublereal {.importc: "clangt_".}
proc clapack_clanhb*(norm: var cstring; uplo: var cstring; n: var integer; k: var integer; ab: ptr complex; ldab: var integer; work: ptr real): doublereal {.importc: "clanhb_".}
proc clapack_clanhe*(norm: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; work: ptr real): doublereal {.importc: "clanhe_".}
proc clapack_clanhf*(norm: var cstring; transr: var cstring; uplo: var cstring; n: var integer; a: ptr complex; work: ptr real): doublereal {.importc: "clanhf_".}
proc clapack_clanhp*(norm: var cstring; uplo: var cstring; n: var integer; ap: ptr complex; work: ptr real): doublereal {.importc: "clanhp_".}
proc clapack_clanhs*(norm: var cstring; n: var integer; a: ptr complex; lda: var integer; work: ptr real): doublereal {.importc: "clanhs_".}
proc clapack_clanht*(norm: var cstring; n: var integer; d: ptr real; e: ptr complex): doublereal {.importc: "clanht_".}
proc clapack_clansb*(norm: var cstring; uplo: var cstring; n: var integer; k: var integer; ab: ptr complex; ldab: var integer; work: ptr real): doublereal {.importc: "clansb_".}
proc clapack_clansp*(norm: var cstring; uplo: var cstring; n: var integer; ap: ptr complex; work: ptr real): doublereal {.importc: "clansp_".}
proc clapack_clansy*(norm: var cstring; uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; work: ptr real): doublereal {.importc: "clansy_".}
proc clapack_clantb*(norm: var cstring; uplo: var cstring; diag: var cstring; n: var integer; k: var integer; ab: ptr complex; ldab: var integer; work: ptr real): doublereal {.importc: "clantb_".}
proc clapack_clantp*(norm: var cstring; uplo: var cstring; diag: var cstring; n: var integer; ap: ptr complex; work: ptr real): doublereal {.importc: "clantp_".}
proc clapack_clantr*(norm: var cstring; uplo: var cstring; diag: var cstring; m: var integer; n: var integer; a: ptr complex; lda: var integer; work: ptr real): doublereal {.importc: "clantr_".}
proc clapack_clapll*(n: var integer; x: ptr complex; incx: var integer; y: ptr complex; incy: var integer; ssmin: ptr real): cint {.importc: "clapll_".}
proc clapack_clapmt*(forwrd: ptr logical; m: var integer; n: var integer; x: ptr complex; ldx: var integer; k: var integer): cint {.importc: "clapmt_".}
proc clapack_claqgb*(m: var integer; n: var integer; kl: var integer; ku: var integer; ab: ptr complex; ldab: var integer; r: ptr real; c: ptr real; rowcnd: ptr real; colcnd: ptr real; amax: ptr real; equed: var cstring): cint {.importc: "claqgb_".}
proc clapack_claqge*(m: var integer; n: var integer; a: ptr complex; lda: var integer; r: ptr real; c: ptr real; rowcnd: ptr real; colcnd: ptr real; amax: ptr real; equed: var cstring): cint {.importc: "claqge_".}
proc clapack_claqhb*(uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; s: ptr real; scond: ptr real; amax: ptr real; equed: var cstring): cint {.importc: "claqhb_".}
proc clapack_claqhe*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; s: ptr real; scond: ptr real; amax: ptr real; equed: var cstring): cint {.importc: "claqhe_".}
proc clapack_claqhp*(uplo: var cstring; n: var integer; ap: ptr complex; s: ptr real; scond: ptr real; amax: ptr real; equed: var cstring): cint {.importc: "claqhp_".}
proc clapack_claqp2*(m: var integer; n: var integer; offset: var integer; a: ptr complex; lda: var integer; jpvt: var integer; tau: ptr complex; vn1: ptr real; vn2: ptr real; work: ptr complex): cint {.importc: "claqp2_".}
proc clapack_claqps*(m: var integer; n: var integer; offset: var integer; nb: var integer; kb: var integer; a: ptr complex; lda: var integer; jpvt: var integer; tau: ptr complex; vn1: ptr real; vn2: ptr real; auxv: ptr complex; f: ptr complex; ldf: var integer): cint {.importc: "claqps_".}
proc clapack_claqr0*(wantt: ptr logical; wantz: ptr logical; n: var integer; ilo: var integer; ihi: var integer; h: ptr complex; ldh: var integer; w: ptr complex; iloz: var integer; ihiz: var integer; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "claqr0_".}
proc clapack_claqr1*(n: var integer; h: ptr complex; ldh: var integer; s1: ptr complex; s2: ptr complex; v: ptr complex): cint {.importc: "claqr1_".}
proc clapack_claqr2*(wantt: ptr logical; wantz: ptr logical; n: var integer; ktop: var integer; kbot: var integer; nw: var integer; h: ptr complex; ldh: var integer; iloz: var integer; ihiz: var integer; z: ptr complex; ldz: var integer; ns: var integer; nd: var integer; sh: ptr complex; v: ptr complex; ldv: var integer; nh: var integer; t: ptr complex; ldt: var integer; nv: var integer; wv: ptr complex; ldwv: var integer; work: ptr complex; lwork: var integer): cint {.importc: "claqr2_".}
proc clapack_claqr3*(wantt: ptr logical; wantz: ptr logical; n: var integer; ktop: var integer; kbot: var integer; nw: var integer; h: ptr complex; ldh: var integer; iloz: var integer; ihiz: var integer; z: ptr complex; ldz: var integer; ns: var integer; nd: var integer; sh: ptr complex; v: ptr complex; ldv: var integer; nh: var integer; t: ptr complex; ldt: var integer; nv: var integer; wv: ptr complex; ldwv: var integer; work: ptr complex; lwork: var integer): cint {.importc: "claqr3_".}
proc clapack_claqr4*(wantt: ptr logical; wantz: ptr logical; n: var integer; ilo: var integer; ihi: var integer; h: ptr complex; ldh: var integer; w: ptr complex; iloz: var integer; ihiz: var integer; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "claqr4_".}
proc clapack_claqr5*(wantt: ptr logical; wantz: ptr logical; kacc22: var integer; n: var integer; ktop: var integer; kbot: var integer; nshfts: var integer; s: ptr complex; h: ptr complex; ldh: var integer; iloz: var integer; ihiz: var integer; z: ptr complex; ldz: var integer; v: ptr complex; ldv: var integer; u: ptr complex; ldu: var integer; nv: var integer; wv: ptr complex; ldwv: var integer; nh: var integer; wh: ptr complex; ldwh: var integer): cint {.importc: "claqr5_".}
proc clapack_claqsb*(uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; s: ptr real; scond: ptr real; amax: ptr real; equed: var cstring): cint {.importc: "claqsb_".}
proc clapack_claqsp*(uplo: var cstring; n: var integer; ap: ptr complex; s: ptr real; scond: ptr real; amax: ptr real; equed: var cstring): cint {.importc: "claqsp_".}
proc clapack_claqsy*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; s: ptr real; scond: ptr real; amax: ptr real; equed: var cstring): cint {.importc: "claqsy_".}
proc clapack_clar1v*(n: var integer; b1: var integer; bn: var integer; lambdas: ptr real; d: ptr real; l: ptr real; ld: ptr real; lld: ptr real; pivmin: ptr real; gaptol: ptr real; z: ptr complex; wantnc: ptr logical; negcnt: var integer; ztz: ptr real; mingma: ptr real; r: var integer; isuppz: var integer; nrminv: ptr real; resid: ptr real; rqcorr: ptr real; work: ptr real): cint {.importc: "clar1v_".}
proc clapack_clar2v*(n: var integer; x: ptr complex; y: ptr complex; z: ptr complex; incx: var integer; c: ptr real; s: ptr complex; incc: var integer): cint {.importc: "clar2v_".}
proc clapack_clarcm*(m: var integer; n: var integer; a: ptr real; lda: var integer; b: ptr complex; ldb: var integer; c: ptr complex; ldc: var integer; rwork: ptr real): cint {.importc: "clarcm_".}
proc clapack_clarf*(side: var cstring; m: var integer; n: var integer; v: ptr complex; incv: var integer; tau: ptr complex; c: ptr complex; ldc: var integer; work: ptr complex): cint {.importc: "clarf_".}
proc clapack_clarfb*(side: var cstring; trans: var cstring; direct: var cstring; storev: var cstring; m: var integer; n: var integer; k: var integer; v: ptr complex; ldv: var integer; t: ptr complex; ldt: var integer; c: ptr complex; ldc: var integer; work: ptr complex; ldwork: var integer): cint {.importc: "clarfb_".}
proc clapack_clarfg*(n: var integer; alpha: ptr complex; x: ptr complex; incx: var integer; tau: ptr complex): cint {.importc: "clarfg_".}
proc clapack_clarfp*(n: var integer; alpha: ptr complex; x: ptr complex; incx: var integer; tau: ptr complex): cint {.importc: "clarfp_".}
proc clapack_clarft*(direct: var cstring; storev: var cstring; n: var integer; k: var integer; v: ptr complex; ldv: var integer; tau: ptr complex; t: ptr complex; ldt: var integer): cint {.importc: "clarft_".}
proc clapack_clarfx*(side: var cstring; m: var integer; n: var integer; v: ptr complex; tau: ptr complex; c: ptr complex; ldc: var integer; work: ptr complex): cint {.importc: "clarfx_".}
proc clapack_clargv*(n: var integer; x: ptr complex; incx: var integer; y: ptr complex; incy: var integer; c: ptr real; incc: var integer): cint {.importc: "clargv_".}
proc clapack_clarnv*(idist: var integer; iseed: var integer; n: var integer; x: ptr complex): cint {.importc: "clarnv_".}
proc clapack_clarrv*(n: var integer; vl: ptr real; vu: ptr real; d: ptr real; l: ptr real; pivmin: ptr real; isplit: var integer; m: var integer; dol: var integer; dou: var integer; minrgp: ptr real; rtol1: ptr real; rtol2: ptr real; w: ptr real; werr: ptr real; wgap: ptr real; iblock: var integer; indexw: var integer; gers: ptr real; z: ptr complex; ldz: var integer; isuppz: var integer; work: ptr real; iwork: var integer; info: var integer): cint {.importc: "clarrv_".}
proc clapack_clarscl2*(m: var integer; n: var integer; d: ptr real; x: ptr complex; ldx: var integer): cint {.importc: "clarscl2_".}
proc clapack_clartg*(f: ptr complex; g: ptr complex; cs: ptr real; sn: ptr complex; r: ptr complex): cint {.importc: "clartg_".}
proc clapack_clartv*(n: var integer; x: ptr complex; incx: var integer; y: ptr complex; incy: var integer; c: ptr real; s: ptr complex; incc: var integer): cint {.importc: "clartv_".}
proc clapack_clarz*(side: var cstring; m: var integer; n: var integer; l: var integer; v: ptr complex; incv: var integer; tau: ptr complex; c: ptr complex; ldc: var integer; work: ptr complex): cint {.importc: "clarz_".}
proc clapack_clarzb*(side: var cstring; trans: var cstring; direct: var cstring; storev: var cstring; m: var integer; n: var integer; k: var integer; l: var integer; v: ptr complex; ldv: var integer; t: ptr complex; ldt: var integer; c: ptr complex; ldc: var integer; work: ptr complex; ldwork: var integer): cint {.importc: "clarzb_".}
proc clapack_clarzt*(direct: var cstring; storev: var cstring; n: var integer; k: var integer; v: ptr complex; ldv: var integer; tau: ptr complex; t: ptr complex; ldt: var integer): cint {.importc: "clarzt_".}
proc clapack_clascl*(ctype: var cstring; kl: var integer; ku: var integer; cfrom: ptr real; cto: ptr real; m: var integer; n: var integer; a: ptr complex; lda: var integer; info: var integer): cint {.importc: "clascl_".}
proc clapack_clascl2*(m: var integer; n: var integer; d: ptr real; x: ptr complex; ldx: var integer): cint {.importc: "clascl2_".}
proc clapack_claset*(uplo: var cstring; m: var integer; n: var integer; alpha: ptr complex; beta: ptr complex; a: ptr complex; lda: var integer): cint {.importc: "claset_".}
proc clapack_clasr*(side: var cstring; pivot: var cstring; direct: var cstring; m: var integer; n: var integer; c: ptr real; s: ptr real; a: ptr complex; lda: var integer): cint {.importc: "clasr_".}
proc clapack_classq*(n: var integer; x: ptr complex; incx: var integer; scale: ptr real; sumsq: ptr real): cint {.importc: "classq_".}
proc clapack_claswp*(n: var integer; a: ptr complex; lda: var integer; k1: var integer; k2: var integer; ipiv: var cint; incx: var integer): cint {.importc: "claswp_".}
proc clapack_clasyf*(uplo: var cstring; n: var integer; nb: var integer; kb: var integer; a: ptr complex; lda: var integer; ipiv: var cint; w: ptr complex; ldw: var integer; info: var integer): cint {.importc: "clasyf_".}
proc clapack_clatbs*(uplo: var cstring; trans: var cstring; diag: var cstring; normin: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; x: ptr complex; scale: ptr real; cnorm: ptr real; info: var integer): cint {.importc: "clatbs_".}
proc clapack_clatdf*(ijob: var integer; n: var integer; z: ptr complex; ldz: var integer; rhs: ptr complex; rdsum: ptr real; rdscal: ptr real; ipiv: var cint; jpiv: var cint): cint {.importc: "clatdf_".}
proc clapack_clatps*(uplo: var cstring; trans: var cstring; diag: var cstring; normin: var cstring; n: var integer; ap: ptr complex; x: ptr complex; scale: ptr real; cnorm: ptr real; info: var integer): cint {.importc: "clatps_".}
proc clapack_clatrd*(uplo: var cstring; n: var integer; nb: var integer; a: ptr complex; lda: var integer; e: ptr real; tau: ptr complex; w: ptr complex; ldw: var integer): cint {.importc: "clatrd_".}
proc clapack_clatrs*(uplo: var cstring; trans: var cstring; diag: var cstring; normin: var cstring; n: var integer; a: ptr complex; lda: var integer; x: ptr complex; scale: ptr real; cnorm: ptr real; info: var integer): cint {.importc: "clatrs_".}
proc clapack_clatrz*(m: var integer; n: var integer; l: var integer; a: ptr complex; lda: var integer; tau: ptr complex; work: ptr complex): cint {.importc: "clatrz_".}
proc clapack_clatzm*(side: var cstring; m: var integer; n: var integer; v: ptr complex; incv: var integer; tau: ptr complex; c1: ptr complex; c2: ptr complex; ldc: var integer; work: ptr complex): cint {.importc: "clatzm_".}
proc clapack_clauu2*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; info: var integer): cint {.importc: "clauu2_".}
proc clapack_clauum*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; info: var integer): cint {.importc: "clauum_".}
proc clapack_cpbcon*(uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; anorm: ptr real; rcond: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cpbcon_".}
proc clapack_cpbequ*(uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; s: ptr real; scond: ptr real; amax: ptr real; info: var integer): cint {.importc: "cpbequ_".}
proc clapack_cpbrfs*(uplo: var cstring; n: var integer; kd: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cpbrfs_".}
proc clapack_cpbstf*(uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; info: var integer): cint {.importc: "cpbstf_".}
proc clapack_cpbsv*(uplo: var cstring; n: var integer; kd: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cpbsv_".}
proc clapack_cpbsvx*(fact: var cstring; uplo: var cstring; n: var integer; kd: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; afb: ptr complex; ldafb: var integer; equed: var cstring; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cpbsvx_".}
proc clapack_cpbtf2*(uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; info: var integer): cint {.importc: "cpbtf2_".}
proc clapack_cpbtrf*(uplo: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; info: var integer): cint {.importc: "cpbtrf_".}
proc clapack_cpbtrs*(uplo: var cstring; n: var integer; kd: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cpbtrs_".}
proc clapack_cpftrf*(transr: var cstring; uplo: var cstring; n: var integer; a: ptr complex; info: var integer): cint {.importc: "cpftrf_".}
proc clapack_cpftri*(transr: var cstring; uplo: var cstring; n: var integer; a: ptr complex; info: var integer): cint {.importc: "cpftri_".}
proc clapack_cpftrs*(transr: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cpftrs_".}
proc clapack_cpocon*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; anorm: ptr real; rcond: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cpocon_".}
proc clapack_cpoequ*(n: var integer; a: ptr complex; lda: var integer; s: ptr real; scond: ptr real; amax: ptr real; info: var integer): cint {.importc: "cpoequ_".}
proc clapack_cpoequb*(n: var integer; a: ptr complex; lda: var integer; s: ptr real; scond: ptr real; amax: ptr real; info: var integer): cint {.importc: "cpoequb_".}
proc clapack_cporfs*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cporfs_".}
proc clapack_cporfsx*(uplo: var cstring; equed: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cporfsx_".}
proc clapack_cposv*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cposv_".}
proc clapack_cposvx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; equed: var cstring; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cposvx_".}
proc clapack_cposvxx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; equed: var cstring; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; rpvgrw: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cposvxx_".}
proc clapack_cpotf2*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; info: var integer): cint {.importc: "cpotf2_".}
proc clapack_cpotrf*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; info: var integer): cint {.importc: "cpotrf_".}
proc clapack_cpotri*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; info: var integer): cint {.importc: "cpotri_".}
proc clapack_cpotrs*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cpotrs_".}
proc clapack_cppcon*(uplo: var cstring; n: var integer; ap: ptr complex; anorm: ptr real; rcond: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cppcon_".}
proc clapack_cppequ*(uplo: var cstring; n: var integer; ap: ptr complex; s: ptr real; scond: ptr real; amax: ptr real; info: var integer): cint {.importc: "cppequ_".}
proc clapack_cpprfs*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; afp: ptr complex; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cpprfs_".}
proc clapack_cppsv*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cppsv_".}
proc clapack_cppsvx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; afp: ptr complex; equed: var cstring; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cppsvx_".}
proc clapack_cpptrf*(uplo: var cstring; n: var integer; ap: ptr complex; info: var integer): cint {.importc: "cpptrf_".}
proc clapack_cpptri*(uplo: var cstring; n: var integer; ap: ptr complex; info: var integer): cint {.importc: "cpptri_".}
proc clapack_cpptrs*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cpptrs_".}
proc clapack_cpstf2*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; piv: var integer; rank: var integer; tol: ptr real; work: ptr real; info: var integer): cint {.importc: "cpstf2_".}
proc clapack_cpstrf*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; piv: var integer; rank: var integer; tol: ptr real; work: ptr real; info: var integer): cint {.importc: "cpstrf_".}
proc clapack_cptcon*(n: var integer; d: ptr real; e: ptr complex; anorm: ptr real; rcond: ptr real; rwork: ptr real; info: var integer): cint {.importc: "cptcon_".}
proc clapack_cpteqr*(compz: var cstring; n: var integer; d: ptr real; e: ptr real; z: ptr complex; ldz: var integer; work: ptr real; info: var integer): cint {.importc: "cpteqr_".}
proc clapack_cptrfs*(uplo: var cstring; n: var integer; nrhs: var integer; d: ptr real; e: ptr complex; df: ptr real; ef: ptr complex; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cptrfs_".}
proc clapack_cptsv*(n: var integer; nrhs: var integer; d: ptr real; e: ptr complex; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cptsv_".}
proc clapack_cptsvx*(fact: var cstring; n: var integer; nrhs: var integer; d: ptr real; e: ptr complex; df: ptr real; ef: ptr complex; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cptsvx_".}
proc clapack_cpttrf*(n: var integer; d: ptr real; e: ptr complex; info: var integer): cint {.importc: "cpttrf_".}
proc clapack_cpttrs*(uplo: var cstring; n: var integer; nrhs: var integer; d: ptr real; e: ptr complex; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cpttrs_".}
proc clapack_cptts2*(iuplo: var integer; n: var integer; nrhs: var integer; d: ptr real; e: ptr complex; b: ptr complex; ldb: var integer): cint {.importc: "cptts2_".}
proc clapack_crot*(n: var integer; cx: ptr complex; incx: var integer; cy: ptr complex; incy: var integer; c: ptr real; s: ptr complex): cint {.importc: "crot_".}
proc clapack_cspcon*(uplo: var cstring; n: var integer; ap: ptr complex; ipiv: var cint; anorm: ptr real; rcond: ptr real; work: ptr complex; info: var integer): cint {.importc: "cspcon_".}
proc clapack_cspmv*(uplo: var cstring; n: var integer; alpha: ptr complex; ap: ptr complex; x: ptr complex; incx: var integer; beta: ptr complex; y: ptr complex; incy: var integer): cint {.importc: "cspmv_".}
proc clapack_cspr*(uplo: var cstring; n: var integer; alpha: ptr complex; x: ptr complex; incx: var integer; ap: ptr complex): cint {.importc: "cspr_".}
proc clapack_csprfs*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; afp: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "csprfs_".}
proc clapack_cspsv*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "cspsv_".}
proc clapack_cspsvx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; afp: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "cspsvx_".}
proc clapack_csptrf*(uplo: var cstring; n: var integer; ap: ptr complex; ipiv: var cint; info: var integer): cint {.importc: "csptrf_".}
proc clapack_csptri*(uplo: var cstring; n: var integer; ap: ptr complex; ipiv: var cint; work: ptr complex; info: var integer): cint {.importc: "csptri_".}
proc clapack_csptrs*(uplo: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "csptrs_".}
proc clapack_csrscl*(n: var integer; sa: ptr real; sx: ptr complex; incx: var integer): cint {.importc: "csrscl_".}
proc clapack_cstedc*(compz: var cstring; n: var integer; d: ptr real; e: ptr real; z: ptr complex; ldz: var integer; work: ptr complex; lwork: var integer; rwork: ptr real; lrwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "cstedc_".}
proc clapack_cstegr*(jobz: var cstring; range: var cstring; n: var integer; d: ptr real; e: ptr real; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; abstol: ptr real; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; isuppz: var integer; work: ptr real; lwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "cstegr_".}
proc clapack_cstein*(n: var integer; d: ptr real; e: ptr real; m: var integer; w: ptr real; iblock: var integer; isplit: var integer; z: ptr complex; ldz: var integer; work: ptr real; iwork: var integer; ifail: var integer; info: var integer): cint {.importc: "cstein_".}
proc clapack_cstemr*(jobz: var cstring; range: var cstring; n: var integer; d: ptr real; e: ptr real; vl: ptr real; vu: ptr real; il: var integer; iu: var integer; m: var integer; w: ptr real; z: ptr complex; ldz: var integer; nzc: var integer; isuppz: var integer; tryrac: ptr logical; work: ptr real; lwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "cstemr_".}
proc clapack_csteqr*(compz: var cstring; n: var integer; d: ptr real; e: ptr real; z: ptr complex; ldz: var integer; work: ptr real; info: var integer): cint {.importc: "csteqr_".}
proc clapack_csycon*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; anorm: ptr real; rcond: ptr real; work: ptr complex; info: var integer): cint {.importc: "csycon_".}
proc clapack_csyequb*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; s: ptr real; scond: ptr real; amax: ptr real; work: ptr complex; info: var integer): cint {.importc: "csyequb_".}
proc clapack_csymv*(uplo: var cstring; n: var integer; alpha: ptr complex; a: ptr complex; lda: var integer; x: ptr complex; incx: var integer; beta: ptr complex; y: ptr complex; incy: var integer): cint {.importc: "csymv_".}
proc clapack_csyr*(uplo: var cstring; n: var integer; alpha: ptr complex; x: ptr complex; incx: var integer; a: ptr complex; lda: var integer): cint {.importc: "csyr_".}
proc clapack_csyrfs*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "csyrfs_".}
proc clapack_csyrfsx*(uplo: var cstring; equed: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "csyrfsx_".}
proc clapack_csysv*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "csysv_".}
proc clapack_csysvx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; ferr: ptr real; berr: ptr real; work: ptr complex; lwork: var integer; rwork: ptr real; info: var integer): cint {.importc: "csysvx_".}
proc clapack_csysvxx*(fact: var cstring; uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; af: ptr complex; ldaf: var integer; ipiv: var cint; equed: var cstring; s: ptr real; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; rcond: ptr real; rpvgrw: ptr real; berr: ptr real; n_err_bnds: var integer; err_bnds_norm: ptr real; err_bnds_comp: ptr real; nparams: var integer; params: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "csysvxx_".}
proc clapack_csytf2*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; info: var integer): cint {.importc: "csytf2_".}
proc clapack_csytrf*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; work: ptr complex; lwork: var integer; info: var integer): cint {.importc: "csytrf_".}
proc clapack_csytri*(uplo: var cstring; n: var integer; a: ptr complex; lda: var integer; ipiv: var cint; work: ptr complex; info: var integer): cint {.importc: "csytri_".}
proc clapack_csytrs*(uplo: var cstring; n: var integer; nrhs: var integer; a: ptr complex; lda: var integer; ipiv: var cint; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "csytrs_".}
proc clapack_ctbcon*(norm: var cstring; uplo: var cstring; diag: var cstring; n: var integer; kd: var integer; ab: ptr complex; ldab: var integer; rcond: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "ctbcon_".}
proc clapack_ctbrfs*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; kd: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "ctbrfs_".}
proc clapack_ctbtrs*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; kd: var integer; nrhs: var integer; ab: ptr complex; ldab: var integer; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "ctbtrs_".}
proc clapack_ctfsm*(transr: var cstring; side: var cstring; uplo: var cstring; trans: var cstring; diag: var cstring; m: var integer; n: var integer; alpha: ptr complex; a: ptr complex; b: ptr complex; ldb: var integer): cint {.importc: "ctfsm_".}
proc clapack_ctftri*(transr: var cstring; uplo: var cstring; diag: var cstring; n: var integer; a: ptr complex; info: var integer): cint {.importc: "ctftri_".}
proc clapack_ctfttp*(transr: var cstring; uplo: var cstring; n: var integer; arf: ptr complex; ap: ptr complex; info: var integer): cint {.importc: "ctfttp_".}
proc clapack_ctfttr*(transr: var cstring; uplo: var cstring; n: var integer; arf: ptr complex; a: ptr complex; lda: var integer; info: var integer): cint {.importc: "ctfttr_".}
proc clapack_ctgevc*(side: var cstring; howmny: var cstring; select: ptr logical; n: var integer; s: ptr complex; lds: var integer; p: ptr complex; ldp: var integer; vl: ptr complex; ldvl: var integer; vr: ptr complex; ldvr: var integer; mm: var integer; m: var integer; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "ctgevc_".}
proc clapack_ctgex2*(wantq: ptr logical; wantz: ptr logical; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; q: ptr complex; ldq: var integer; z: ptr complex; ldz: var integer; j1: var integer; info: var integer): cint {.importc: "ctgex2_".}
proc clapack_ctgexc*(wantq: ptr logical; wantz: ptr logical; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; q: ptr complex; ldq: var integer; z: ptr complex; ldz: var integer; ifst: var integer; ilst: var integer; info: var integer): cint {.importc: "ctgexc_".}
proc clapack_ctgsen*(ijob: var integer; wantq: ptr logical; wantz: ptr logical; select: ptr logical; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; alpha: ptr complex; beta: ptr complex; q: ptr complex; ldq: var integer; z: ptr complex; ldz: var integer; m: var integer; pl: ptr real; pr: ptr real; dif: ptr real; work: ptr complex; lwork: var integer; iwork: var integer; liwork: var integer; info: var integer): cint {.importc: "ctgsen_".}
proc clapack_ctgsja*(jobu: var cstring; jobv: var cstring; jobq: var cstring; m: var integer; p: var integer; n: var integer; k: var integer; l: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; tola: ptr real; tolb: ptr real; alpha: ptr real; beta: ptr real; u: ptr complex; ldu: var integer; v: ptr complex; ldv: var integer; q: ptr complex; ldq: var integer; work: ptr complex; ncycle: var integer; info: var integer): cint {.importc: "ctgsja_".}
proc clapack_ctgsna*(job: var cstring; howmny: var cstring; select: ptr logical; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; vl: ptr complex; ldvl: var integer; vr: ptr complex; ldvr: var integer; s: ptr real; dif: ptr real; mm: var integer; m: var integer; work: ptr complex; lwork: var integer; iwork: var integer; info: var integer): cint {.importc: "ctgsna_".}
proc clapack_ctgsy2*(trans: var cstring; ijob: var integer; m: var integer; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; c: ptr complex; ldc: var integer; d: ptr complex; ldd: var integer; e: ptr complex; lde: var integer; f: ptr complex; ldf: var integer; scale: ptr real; rdsum: ptr real; rdscal: ptr real; info: var integer): cint {.importc: "ctgsy2_".}
proc clapack_ctgsyl*(trans: var cstring; ijob: var integer; m: var integer; n: var integer; a: ptr complex; lda: var integer; b: ptr complex; ldb: var integer; c: ptr complex; ldc: var integer; d: ptr complex; ldd: var integer; e: ptr complex; lde: var integer; f: ptr complex; ldf: var integer; scale: ptr real; dif: ptr real; work: ptr complex; lwork: var integer; iwork: var integer; info: var integer): cint {.importc: "ctgsyl_".}
proc clapack_ctpcon*(norm: var cstring; uplo: var cstring; diag: var cstring; n: var integer; ap: ptr complex; rcond: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "ctpcon_".}
proc clapack_ctprfs*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; b: ptr complex; ldb: var integer; x: ptr complex; ldx: var integer; ferr: ptr real; berr: ptr real; work: ptr complex; rwork: ptr real; info: var integer): cint {.importc: "ctprfs_".}
proc clapack_ctptri*(uplo: var cstring; diag: var cstring; n: var integer; ap: ptr complex; info: var integer): cint {.importc: "ctptri_".}
proc clapack_ctptrs*(uplo: var cstring; trans: var cstring; diag: var cstring; n: var integer; nrhs: var integer; ap: ptr complex; b: ptr complex; ldb: var integer; info: var integer): cint {.importc: "ctptrs_".}