-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathgenerator.py
1349 lines (1323 loc) · 210 KB
/
generator.py
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
# Copyright 2020, 2021, Ludovic Henry
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the \"Software\"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Please contact [email protected] or visit ludovic.dev if you need additional
# information or have any questions.
import sys
class JBooleanR:
def __init__(self):
self.native_type = "int"
self.java_type = "jboolean"
class JIntR:
def __init__(self):
self.native_type = "int"
self.java_type = "jint"
class JFloatR:
def __init__(self):
self.native_type = "float"
self.java_type = "jfloat"
class JDoubleR:
def __init__(self):
self.native_type = "double"
self.java_type = "jdouble"
class JBoolean:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "int *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jboolean {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "int __n{name} __attribute__((aligned(8)));".format(name=name)
self.prolog = "__n{name} = {name};".format(name=name)
self.epilog = ""
class JInt:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "int *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jint {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "int __n{name} __attribute__((aligned(8)));".format(name=name)
self.prolog = "__n{name} = {name};".format(name=name)
self.epilog = ""
class JLong:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "long *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jlong {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "long __n{name} __attribute__((aligned(8)));".format(name=name)
self.prolog = "__n{name} = {name};".format(name=name)
self.epilog = ""
class JFloat:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "float *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jfloat {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "float __n{name} __attribute__((aligned(8)));".format(name=name)
self.prolog = "__n{name} = {name};".format(name=name)
self.epilog = ""
class JDouble:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "double *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jdouble {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "double __n{name} __attribute__((aligned(8)));".format(name=name)
self.prolog = "__n{name} = {name};".format(name=name)
self.epilog = ""
class JString:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "const char *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jstring {name}"]]
self.native_argument = "__n{name}".format(name=name)
self.native_local = "const char *__n{name} = NULL;".format(name=name)
self.prolog = "if (!(__n{name} = (*env)->GetStringUTFChars(env, {name}, NULL))) {{ __failed = TRUE; goto done; }}".format(name=name)
self.epilog = "if (__n{name}) (*env)->ReleaseStringUTFChars(env, {name}, __n{name});".format(name=name)
class JObject:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "const char *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jstring {name}"]]
# self.native_argument = "__n{name}".format(name=name)
# self.native_local = "const char *__n{name} = NULL;".format(name=name)
# self.prolog = "if (!(__n{name} = (*env)->GetStringUTFChars(env, {name}, NULL))) {{ __failed = TRUE; goto done; }}".format(name=name)
# self.epilog = "if (__n{name}) (*env)->ReleaseStringUTFChars(env, {name}, __n{name});".format(name=name)
class JBooleanW:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "int *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jobject {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "int __n{name} = 0;".format(name=name)
self.prolog = "__n{name} = (*env)->GetBooleanField(env, {name}, booleanW_val_fieldID);".format(name=name)
self.epilog = "if (!__failed) (*env)->SetBooleanField(env, {name}, booleanW_val_fieldID, __n{name});".format(name=name)
class JIntW:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "int *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jobject {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "int __n{name} = 0;".format(name=name)
self.prolog = "__n{name} = (*env)->GetIntField(env, {name}, intW_val_fieldID);".format(name=name)
self.epilog = "if (!__failed) (*env)->SetIntField(env, {name}, intW_val_fieldID, __n{name});".format(name=name)
class JFloatW:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "float *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jobject {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "float __n{name} = 0;".format(name=name)
self.prolog = "__n{name} = (*env)->GetFloatField(env, {name}, floatW_val_fieldID);".format(name=name)
self.epilog = "if (!__failed) (*env)->SetFloatField(env, {name}, floatW_val_fieldID, __n{name});".format(name=name)
class JDoubleW:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "double *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jobject {name}"]]
self.native_argument = "&__n{name}".format(name=name)
self.native_local = "double __n{name} = 0;".format(name=name)
self.prolog = "__n{name} = (*env)->GetDoubleField(env, {name}, doubleW_val_fieldID);".format(name=name)
self.epilog = "if (!__failed) (*env)->SetDoubleField(env, {name}, doubleW_val_fieldID, __n{name});".format(name=name)
class JStringW:
def __init__(self, name):
self.idx = 0
self.name = name
self.native_type_and_name = "char *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jobject {name}"]]
self.native_argument = "__n{name}".format(name=name)
self.native_local = "char *__n{name} = NULL; jstring __j{name} = NULL;".format(name=name)
self.prolog = "__j{name} = (jstring)(*env)->GetObjectField(env, {name}, StringW_val_fieldID); if (!(__n{name} = (char*)(*env)->GetStringUTFChars(env, {name}, NULL))) {{ __failed = TRUE; goto done; }}".format(name=name)
self.epilog = "if (__n{name}) {{ (*env)->ReleaseStringUTFChars(env, __j{name}, (const char*)__n{name}); if (!__failed) (*env)->SetObjectField(env, {name}, StringW_val_fieldID, __j{name}); }}".format(name=name)
class JBooleanArray:
def __init__(self, name):
self.idx = 1
self.name = name
self.native_type_and_name = "int *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jbooleanArray {name}", "jint offset{name}"]]
self.native_argument = "__n{name} ? __n{name} + offset{name} : NULL".format(name=name)
self.native_local = "int *__n{name} = NULL; jboolean *__j{name} = NULL;".format(name=name)
self.prolog = """if ({name}) {{ if (!(__j{name} = (*env)->GetPrimitiveArrayCritical(env, {name}, NULL))) {{ __failed = TRUE; goto done; }}
do {{
int __length = (*env)->GetArrayLength(env, {name});
if (__length <= 0) {{ __failed = TRUE; goto done; }}
if (!(__n{name} = malloc(sizeof(int) * __length))) {{ __failed = TRUE; goto done; }}
for (int i = 0; i < __length; i++) {{ __n{name}[i] = __j{name}[i]; }}
}} while(0); }}""".format(name=name)
self.epilog = "if (__n{name}) {{ free(__n{name}); }} if (__j{name}) (*env)->ReleasePrimitiveArrayCritical(env, {name}, __n{name}, JNI_ABORT);".format(name=name)
class JIntArray:
def __init__(self, name, mode = "0"):
self.idx = 1
self.name = name
self.native_type_and_name = "int *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jintArray {name}", "jint offset{name}"]]
self.native_argument = "__n{name} ? __n{name} + offset{name} : NULL".format(name=name)
self.native_local = "int *__n{name} = NULL;".format(name=name)
self.prolog = "if ({name}) {{ if (!(__n{name} = (*env)->GetPrimitiveArrayCritical(env, {name}, NULL))) {{ __failed = TRUE; goto done; }} }}".format(name=name)
self.epilog = "if (__n{name}) (*env)->ReleasePrimitiveArrayCritical(env, {name}, __n{name}, {mode});".format(name=name, mode=("JNI_ABORT" if mode == "JNI_ABORT" else ("__failed ? JNI_ABORT : %s" % mode)))
class JFloatArray:
def __init__(self, name, mode = "0"):
self.idx = 1
self.name = name
self.native_type_and_name = "float *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jfloatArray {name}", "jint offset{name}"]]
self.native_argument = "__n{name} ? __n{name} + offset{name} : NULL".format(name=name)
self.native_local = "float *__n{name} = NULL;".format(name=name)
self.prolog = "if ({name}) {{ if (!(__n{name} = (*env)->GetPrimitiveArrayCritical(env, {name}, NULL))) {{ __failed = TRUE; goto done; }} }}".format(name=name)
self.epilog = "if (__n{name}) (*env)->ReleasePrimitiveArrayCritical(env, {name}, __n{name}, {mode});".format(name=name, mode=("JNI_ABORT" if mode == "JNI_ABORT" else ("__failed ? JNI_ABORT : %s" % mode)))
class JDoubleArray:
def __init__(self, name, mode = "0"):
self.idx = 1
self.name = name
self.native_type_and_name = "double *{name}".format(name=name)
self.java_type_and_name = [a.format(name=name) for a in ["jdoubleArray {name}", "jint offset{name}"]]
self.native_argument = "__n{name} ? __n{name} + offset{name} : NULL".format(name=name)
self.native_local = "double *__n{name} = NULL;".format(name=name)
self.prolog = "if ({name}) {{ if (!(__n{name} = (*env)->GetPrimitiveArrayCritical(env, {name}, NULL))) {{ __failed = TRUE; goto done; }} }}".format(name=name)
self.epilog = "if (__n{name}) (*env)->ReleasePrimitiveArrayCritical(env, {name}, __n{name}, {mode});".format(name=name, mode=("JNI_ABORT" if mode == "JNI_ABORT" else ("__failed ? JNI_ABORT : %s" % mode)))
class RoutineR:
def __init__(self, ret, name, *args):
self.ret = ret
self.name = name
self.args = args
def render(self, pkg):
# Print native function signature
print("static {ret} (*{name}_)({args});".format(ret=self.ret.native_type, name=self.name, args=", ".join([arg.native_type_and_name for arg in self.args])))
print()
# Print JNI function implementation
print("{ret} Java_dev_ludovic_netlib_{pkg}_JNI{pkgupper}_{name}K(JNIEnv *env, UNUSED jobject obj{args}) {{".format(ret=self.ret.java_type, pkg=pkg, pkgupper=pkg.upper(), name=self.name, args="".join([", " + a for arg in self.args for a in arg.java_type_and_name])))
print(" if (!{name}_) (*env)->ThrowNew(env, (*env)->FindClass(env, \"java/lang/UnsupportedOperationException\"), \"symbol isn't available in native library\");".format(name=self.name))
print(" {rettype} __ret = 0;".format(rettype=self.ret.java_type))
print(" jboolean __failed = FALSE;")
if any(len(arg.native_local) > 0 for arg in sorted(self.args, key=lambda a: a.idx)):
print("\n".join([" " + a for a in [arg.native_local for arg in sorted(self.args, key=lambda a: a.idx)] if len(a) > 0]))
if any(len(arg.prolog) > 0 for arg in sorted(self.args, key=lambda a: a.idx)):
print("\n".join([" " + a for a in [arg.prolog for arg in sorted(self.args, key=lambda a: a.idx)] if len(a) > 0]))
print(" __ret = {name}_({args});".format(name=self.name, args=", ".join([arg.native_argument for arg in self.args])))
print("done:")
if any(len(arg.epilog) > 0 for arg in sorted(self.args, key=lambda a: a.idx)):
print("\n".join([" " + a for a in [arg.epilog for arg in sorted(self.args, key=lambda a: a.idx)] if len(a) > 0][::-1]))
print(" if (__failed) (*env)->ThrowNew(env, (*env)->FindClass(env, \"java/lang/OutOfMemoryError\"), \"Failed to copy from heap to native memory\");")
print(" return __ret;")
print("}")
print()
def render_load_symbol(self):
print(" LOAD_SYMBOL({name}_);".format(name=self.name))
class RoutineR_NI:
def __init__(self, ret, name, *args):
self.ret = ret
self.name = name
self.args = args
def render(self, pkg):
# Print native function signature
print("// static {ret} (*{name}_)({args});".format(ret=self.ret.native_type, name=self.name, args=", ".join([arg.native_type_and_name for arg in self.args])))
print()
# Print JNI function implementation
print("{ret} Java_dev_ludovic_netlib_{pkg}_JNI{pkgupper}_{name}K(JNIEnv *env, UNUSED jobject obj{args}) {{".format(ret=self.ret.java_type, pkg=pkg, pkgupper=pkg.upper(), name=self.name, args="".join([", UNUSED " + arg.java_type_and_name for arg in self.args])))
print(" (*env)->ThrowNew(env, (*env)->FindClass(env, \"java/lang/UnsupportedOperationException\"), \"not implemented\");")
print(" return 0;")
print("}")
print()
def render_load_symbol(self):
print(" // LOAD_SYMBOL({name}_);".format(name=self.name))
class Routine:
def __init__(self, name, *args):
self.name = name
self.args = args
def render(self, pkg):
# Print native function signature
print("static void (*{name}_)({args});".format(name=self.name, args=", ".join([arg.native_type_and_name for arg in self.args])))
print()
# Print JNI function implementation
print("void Java_dev_ludovic_netlib_{pkg}_JNI{pkgupper}_{name}K(JNIEnv *env, UNUSED jobject obj{args}) {{".format(pkg=pkg, pkgupper=pkg.upper(), name=self.name, args="".join([", " + a for arg in self.args for a in arg.java_type_and_name])))
print(" if (!{name}_) (*env)->ThrowNew(env, (*env)->FindClass(env, \"java/lang/UnsupportedOperationException\"), \"symbol isn't available in native library\");".format(name=self.name))
print(" jboolean __failed = FALSE;")
if any(len(arg.native_local) > 0 for arg in sorted(self.args, key=lambda a: a.idx)):
print("\n".join([" " + a for a in [arg.native_local for arg in sorted(self.args, key=lambda a: a.idx)] if len(a) > 0]))
if any(len(arg.prolog) > 0 for arg in sorted(self.args, key=lambda a: a.idx)):
print("\n".join([" " + a for a in [arg.prolog for arg in sorted(self.args, key=lambda a: a.idx)] if len(a) > 0]))
print(" {name}_({args});".format(name=self.name, args=", ".join([arg.native_argument for arg in self.args])))
print("done:")
if any(len(arg.epilog) > 0 for arg in sorted(self.args, key=lambda a: a.idx)):
print("\n".join([" " + a for a in [arg.epilog for arg in sorted(self.args, key=lambda a: a.idx)] if len(a) > 0][::-1]))
print(" if (__failed) (*env)->ThrowNew(env, (*env)->FindClass(env, \"java/lang/OutOfMemoryError\"), \"Failed to copy from heap to native memory\");")
print("}")
print()
def render_load_symbol(self):
print(" LOAD_SYMBOL({name}_);".format(name=self.name))
class Routine_NI:
def __init__(self, name, *args):
self.name = name
self.args = args
def render(self, pkg):
# Print native function signature
print("// static void (*{name}_)({args});".format(name=self.name, args=", ".join([arg.native_type_and_name for arg in self.args])))
print()
# Print JNI function implementation
print("void Java_dev_ludovic_netlib_{pkg}_JNI{pkgupper}_{name}K(JNIEnv *env, UNUSED jobject obj{args}) {{".format(pkg=pkg, pkgupper=pkg.upper(), name=self.name, args="".join([", UNUSED " + a for arg in self.args for a in arg.java_type_and_name])))
print(" (*env)->ThrowNew(env, (*env)->FindClass(env, \"java/lang/UnsupportedOperationException\"), \"not implemented\");")
print("}")
print()
def render_load_symbol(self):
print(" // LOAD_SYMBOL({name}_);".format(name=self.name))
class Library:
def __init__(self, pkg, libname, *routines):
# Print copyright header
print("/*")
print(" * Copyright 2020, 2021, Ludovic Henry")
print(" *")
print(" * Permission is hereby granted, free of charge, to any person obtaining a copy")
print(" * of this software and associated documentation files (the \"Software\"), to deal")
print(" * in the Software without restriction, including without limitation the rights")
print(" * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell")
print(" * copies of the Software, and to permit persons to whom the Software is")
print(" * furnished to do so, subject to the following conditions:")
print(" *")
print(" * The above copyright notice and this permission notice shall be included in")
print(" * all copies or substantial portions of the Software.")
print(" *")
print(" * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR")
print(" * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,")
print(" * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE")
print(" * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER")
print(" * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,")
print(" * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE")
print(" * SOFTWARE.")
print(" *")
print(" * Please contact [email protected] or visit ludovic.dev if you need additional")
print(" * information or have any questions.")
print(" */")
print()
# Print includes
print("#include <stdlib.h>")
print("#include <string.h>")
print("#include <dlfcn.h>")
print()
print("#include \"dev_ludovic_netlib_{pkg}_JNI{pkgupper}.h\"".format(pkg=pkg, pkgupper=pkg.upper()))
print()
# Print defines
print("#define UNUSED __attribute__((unused))")
print()
print("#define TRUE 1")
print("#define FALSE 0")
print()
# Print static fields
print("static jfieldID booleanW_val_fieldID;")
print("static jfieldID intW_val_fieldID;")
print("static jfieldID floatW_val_fieldID;")
print("static jfieldID doubleW_val_fieldID;")
print("static jfieldID StringW_val_fieldID;")
print()
# Print routines bodies
for routine in routines:
routine.render(pkg)
# Print helper functions
print("jboolean get_system_property(JNIEnv *env, jstring key, jstring def, jstring *res) {")
print(" jclass System_class = (*env)->FindClass(env, \"java/lang/System\");")
print(" if (!System_class) {")
print(" return FALSE;")
print(" }")
print(" jmethodID System_getProperty_methodID = (*env)->GetStaticMethodID(env, System_class, \"getProperty\", \"(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;\");")
print(" if (!System_getProperty_methodID) {")
print(" return FALSE;")
print(" }")
print(" *res = (jstring)(*env)->CallStaticObjectMethod(env, System_class, System_getProperty_methodID, key, def);")
print(" return TRUE;")
print("}")
print()
# Print symbols loading
print("jboolean load_symbols(void) {")
print("#define LOAD_SYMBOL(name) \\")
print(" name = dlsym(NULL, #name);")
print("")
for routine in routines:
routine.render_load_symbol()
print("")
print("#undef LOAD_SYMBOL")
print(" return TRUE;")
print("}")
print()
# Print JNI entry functions
print("static void *libhandle;")
print()
print("jint JNI_OnLoad(JavaVM *vm, UNUSED void *reserved) {")
print(" JNIEnv *env;")
print(" if ((*vm)->GetEnv(vm, (void**)&env, JNI_VERSION_1_8) != JNI_OK) {")
print(" return -1;")
print(" }")
print("")
print(" jclass booleanW_class = (*env)->FindClass(env, \"org/netlib/util/booleanW\");")
print(" if (!booleanW_class) {")
print(" return -1;")
print(" }")
print(" booleanW_val_fieldID = (*env)->GetFieldID(env, booleanW_class, \"val\", \"Z\");")
print(" if (!booleanW_val_fieldID) {")
print(" return -1;")
print(" }")
print("")
print(" jclass intW_class = (*env)->FindClass(env, \"org/netlib/util/intW\");")
print(" if (!intW_class) {")
print(" return -1;")
print(" }")
print(" intW_val_fieldID = (*env)->GetFieldID(env, intW_class, \"val\", \"I\");")
print(" if (!intW_val_fieldID) {")
print(" return -1;")
print(" }")
print("")
print(" jclass floatW_class = (*env)->FindClass(env, \"org/netlib/util/floatW\");")
print(" if (!floatW_class) {")
print(" return -1;")
print(" }")
print(" floatW_val_fieldID = (*env)->GetFieldID(env, floatW_class, \"val\", \"F\");")
print(" if (!floatW_val_fieldID) {")
print(" return -1;")
print(" }")
print("")
print(" jclass doubleW_class = (*env)->FindClass(env, \"org/netlib/util/doubleW\");")
print(" if (!doubleW_class) {")
print(" return -1;")
print(" }")
print(" doubleW_val_fieldID = (*env)->GetFieldID(env, doubleW_class, \"val\", \"D\");")
print(" if (!doubleW_val_fieldID) {")
print(" return -1;")
print(" }")
print("")
print(" jclass StringW_class = (*env)->FindClass(env, \"org/netlib/util/StringW\");")
print(" if (!StringW_class) {")
print(" return -1;")
print(" }")
print(" StringW_val_fieldID = (*env)->GetFieldID(env, StringW_class, \"val\", \"Ljava/lang/String;\");")
print(" if (!StringW_val_fieldID) {")
print(" return -1;")
print(" }")
print("")
print(" jstring property_nativeLibPath;")
print(" if (!get_system_property(env, (*env)->NewStringUTF(env, \"dev.ludovic.netlib.{pkg}.nativeLibPath\"), NULL, &property_nativeLibPath)) {{".format(pkg=pkg))
print(" return -1;")
print(" }")
print(" jstring property_nativeLib;")
print(" if (!get_system_property(env, (*env)->NewStringUTF(env, \"dev.ludovic.netlib.{pkg}.nativeLib\"), (*env)->NewStringUTF(env, \"{libname}\"), &property_nativeLib)) {{".format(pkg=pkg, libname=libname))
print(" return -1;")
print(" }")
print("")
print(" char name[1024];")
print(" if (property_nativeLibPath) {")
print(" const char *utf = (*env)->GetStringUTFChars(env, property_nativeLibPath, NULL);")
print(" snprintf(name, sizeof(name), \"%s\", utf);")
print(" (*env)->ReleaseStringUTFChars(env, property_nativeLibPath, utf);")
print(" } else if (property_nativeLib) {")
print(" const char *utf = (*env)->GetStringUTFChars(env, property_nativeLib, NULL);")
print(" snprintf(name, sizeof(name), \"%s\", utf);")
print(" (*env)->ReleaseStringUTFChars(env, property_nativeLib, utf);")
print(" } else {")
print(" /* either property_nativeLibPath or property_nativeLib should always be non-NULL */")
print(" return -1;")
print(" }")
print("")
print(" libhandle = dlopen(name, RTLD_LAZY | RTLD_GLOBAL);")
print(" if (!libhandle) {")
print(" return -1;")
print(" }")
print("")
print(" if (!load_symbols()) {")
print(" return -1;")
print(" }")
print("")
print(" return JNI_VERSION_1_8;")
print("}")
print()
print("void JNI_OnUnload(UNUSED JavaVM *vm, UNUSED void *reserved) {")
print(" dlclose(libhandle);")
print("}")
# Copy from Java
# $> []
# $< Array
# $> (, (int|float|double)Array [a-zA-Z0-9]+), int offset[a-zA-Z0-9]+
# $< $1
# $> ((boolean|int|float|double|String|java.lang.Object|org.netlib.util.(boolean|int|float|double|String)W)(Array)?) ([a-z0-9]+)
# $< $1("$5")
if sys.argv[1] == "blas":
Library("blas", "libblas.so.3",
RoutineR (JDoubleR(), "dasum", JInt("n"), JDoubleArray("x", "JNI_ABORT"), JInt("incx")),
RoutineR (JFloatR(), "sasum", JInt("n"), JFloatArray("x", "JNI_ABORT"), JInt("incx")),
Routine ( "daxpy", JInt("n"), JDouble("alpha"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDoubleArray("y"), JInt("incy")),
Routine ( "saxpy", JInt("n"), JFloat("alpha"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloatArray("y"), JInt("incy")),
Routine ( "dcopy", JInt("n"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDoubleArray("y"), JInt("incy")),
Routine ( "scopy", JInt("n"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloatArray("y"), JInt("incy")),
RoutineR (JDoubleR(), "ddot", JInt("n"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDoubleArray("y", "JNI_ABORT"), JInt("incy")),
RoutineR (JFloatR(), "sdot", JInt("n"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloatArray("y", "JNI_ABORT"), JInt("incy")),
RoutineR (JFloatR(), "sdsdot", JInt("n"), JFloat("sb"), JFloatArray("sx", "JNI_ABORT"), JInt("incsx"), JFloatArray("sy", "JNI_ABORT"), JInt("incsy")),
Routine ( "dgbmv", JString("trans"), JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDouble("beta"), JDoubleArray("y"), JInt("incy")),
Routine ( "sgbmv", JString("trans"), JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloat("beta"), JFloatArray("y"), JInt("incy")),
Routine ( "dgemm", JString("transa"), JString("transb"), JInt("m"), JInt("n"), JInt("k"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("b", "JNI_ABORT"), JInt("ldb"), JDouble("beta"), JDoubleArray("c"), JInt("ldc")),
Routine ( "sgemm", JString("transa"), JString("transb"), JInt("m"), JInt("n"), JInt("k"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("b", "JNI_ABORT"), JInt("ldb"), JFloat("beta"), JFloatArray("c"), JInt("ldc")),
Routine ( "dgemv", JString("trans"), JInt("m"), JInt("n"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDouble("beta"), JDoubleArray("y"), JInt("incy")),
Routine ( "sgemv", JString("trans"), JInt("m"), JInt("n"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloat("beta"), JFloatArray("y"), JInt("incy")),
Routine ( "dger", JInt("m"), JInt("n"), JDouble("alpha"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDoubleArray("y", "JNI_ABORT"), JInt("incy"), JDoubleArray("a"), JInt("lda")),
Routine ( "sger", JInt("m"), JInt("n"), JFloat("alpha"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloatArray("y", "JNI_ABORT"), JInt("incy"), JFloatArray("a"), JInt("lda")),
RoutineR (JDoubleR(), "dnrm2", JInt("n"), JDoubleArray("x", "JNI_ABORT"), JInt("incx")),
RoutineR (JFloatR(), "snrm2", JInt("n"), JFloatArray("x", "JNI_ABORT"), JInt("incx")),
Routine ( "drot", JInt("n"), JDoubleArray("dx"), JInt("incx"), JDoubleArray("dy"), JInt("incy"), JDouble("c"), JDouble("s")),
Routine ( "srot", JInt("n"), JFloatArray("sx"), JInt("incx"), JFloatArray("sy"), JInt("incy"), JFloat("c"), JFloat("s")),
Routine ( "drotm", JInt("n"), JDoubleArray("dx", "JNI_ABORT"), JInt("incx"), JDoubleArray("dy"), JInt("incy"), JDoubleArray("dparam", "JNI_ABORT")),
Routine ( "srotm", JInt("n"), JFloatArray("sx", "JNI_ABORT"), JInt("incx"), JFloatArray("sy"), JInt("incy"), JFloatArray("sparam", "JNI_ABORT")),
Routine ( "drotmg", JDoubleW("dd1"), JDoubleW("dd2"), JDoubleW("dx1"), JDouble("dy1"), JDoubleArray("dparam", "JNI_ABORT")),
Routine ( "srotmg", JFloatW("sd1"), JFloatW("sd2"), JFloatW("sx1"), JFloat("sy1"), JFloatArray("sparam", "JNI_ABORT")),
Routine ( "dsbmv", JString("uplo"), JInt("n"), JInt("k"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDouble("beta"), JDoubleArray("y"), JInt("incy")),
Routine ( "ssbmv", JString("uplo"), JInt("n"), JInt("k"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloat("beta"), JFloatArray("y"), JInt("incy")),
Routine ( "dscal", JInt("n"), JDouble("alpha"), JDoubleArray("x"), JInt("incx")),
Routine ( "sscal", JInt("n"), JFloat("alpha"), JFloatArray("x"), JInt("incx")),
Routine ( "dspmv", JString("uplo"), JInt("n"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDouble("beta"), JDoubleArray("y"), JInt("incy")),
Routine ( "sspmv", JString("uplo"), JInt("n"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloat("beta"), JFloatArray("y"), JInt("incy")),
Routine ( "dspr", JString("uplo"), JInt("n"), JDouble("alpha"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDoubleArray("a")),
Routine ( "sspr", JString("uplo"), JInt("n"), JFloat("alpha"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloatArray("a")),
Routine ( "dspr2", JString("uplo"), JInt("n"), JDouble("alpha"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDoubleArray("y", "JNI_ABORT"), JInt("incy"), JDoubleArray("a")),
Routine ( "sspr2", JString("uplo"), JInt("n"), JFloat("alpha"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloatArray("y", "JNI_ABORT"), JInt("incy"), JFloatArray("a")),
Routine ( "dswap", JInt("n"), JDoubleArray("x"), JInt("incx"), JDoubleArray("y"), JInt("incy")),
Routine ( "sswap", JInt("n"), JFloatArray("x"), JInt("incx"), JFloatArray("y"), JInt("incy")),
Routine ( "dsymm", JString("side"), JString("uplo"), JInt("m"), JInt("n"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("b", "JNI_ABORT"), JInt("ldb"), JDouble("beta"), JDoubleArray("c"), JInt("ldc")),
Routine ( "ssymm", JString("side"), JString("uplo"), JInt("m"), JInt("n"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("b", "JNI_ABORT"), JInt("ldb"), JFloat("beta"), JFloatArray("c"), JInt("ldc")),
Routine ( "dsymv", JString("uplo"), JInt("n"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDouble("beta"), JDoubleArray("y"), JInt("incy")),
Routine ( "ssymv", JString("uplo"), JInt("n"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloat("beta"), JFloatArray("y"), JInt("incy")),
Routine ( "dsyr", JString("uplo"), JInt("n"), JDouble("alpha"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDoubleArray("a"), JInt("lda")),
Routine ( "ssyr", JString("uplo"), JInt("n"), JFloat("alpha"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloatArray("a"), JInt("lda")),
Routine ( "dsyr2", JString("uplo"), JInt("n"), JDouble("alpha"), JDoubleArray("x", "JNI_ABORT"), JInt("incx"), JDoubleArray("y", "JNI_ABORT"), JInt("incy"), JDoubleArray("a"), JInt("lda")),
Routine ( "ssyr2", JString("uplo"), JInt("n"), JFloat("alpha"), JFloatArray("x", "JNI_ABORT"), JInt("incx"), JFloatArray("y", "JNI_ABORT"), JInt("incy"), JFloatArray("a"), JInt("lda")),
Routine ( "dsyr2k", JString("uplo"), JString("trans"), JInt("n"), JInt("k"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("b", "JNI_ABORT"), JInt("ldb"), JDouble("beta"), JDoubleArray("c"), JInt("ldc")),
Routine ( "ssyr2k", JString("uplo"), JString("trans"), JInt("n"), JInt("k"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("b", "JNI_ABORT"), JInt("ldb"), JFloat("beta"), JFloatArray("c"), JInt("ldc")),
Routine ( "dsyrk", JString("uplo"), JString("trans"), JInt("n"), JInt("k"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDouble("beta"), JDoubleArray("c"), JInt("ldc")),
Routine ( "ssyrk", JString("uplo"), JString("trans"), JInt("n"), JInt("k"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloat("beta"), JFloatArray("c"), JInt("ldc")),
Routine ( "dtbmv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("k"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("x"), JInt("incx")),
Routine ( "stbmv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("k"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("x"), JInt("incx")),
Routine ( "dtbsv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("k"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("x"), JInt("incx")),
Routine ( "stbsv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("k"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("x"), JInt("incx")),
Routine ( "dtpmv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JDoubleArray("a", "JNI_ABORT"), JDoubleArray("x"), JInt("incx")),
Routine ( "stpmv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JFloatArray("a", "JNI_ABORT"), JFloatArray("x"), JInt("incx")),
Routine ( "dtpsv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JDoubleArray("a", "JNI_ABORT"), JDoubleArray("x"), JInt("incx")),
Routine ( "stpsv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JFloatArray("a", "JNI_ABORT"), JFloatArray("x"), JInt("incx")),
Routine ( "dtrmm", JString("side"), JString("uplo"), JString("transa"), JString("diag"), JInt("m"), JInt("n"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("b"), JInt("ldb")),
Routine ( "strmm", JString("side"), JString("uplo"), JString("transa"), JString("diag"), JInt("m"), JInt("n"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("b"), JInt("ldb")),
Routine ( "dtrmv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("x"), JInt("incx")),
Routine ( "strmv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("x"), JInt("incx")),
Routine ( "dtrsm", JString("side"), JString("uplo"), JString("transa"), JString("diag"), JInt("m"), JInt("n"), JDouble("alpha"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("b"), JInt("ldb")),
Routine ( "strsm", JString("side"), JString("uplo"), JString("transa"), JString("diag"), JInt("m"), JInt("n"), JFloat("alpha"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("b"), JInt("ldb")),
Routine ( "dtrsv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JDoubleArray("a", "JNI_ABORT"), JInt("lda"), JDoubleArray("x"), JInt("incx")),
Routine ( "strsv", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JFloatArray("a", "JNI_ABORT"), JInt("lda"), JFloatArray("x"), JInt("incx")),
RoutineR (JIntR(), "idamax", JInt("n"), JDoubleArray("dx", "JNI_ABORT"), JInt("incdx")),
RoutineR (JIntR(), "isamax", JInt("n"), JFloatArray("sx", "JNI_ABORT"), JInt("incsx")),
)
if sys.argv[1] == "lapack":
Library("lapack", "liblapack.so.3",
Routine ( "dbdsdc", JString("uplo"), JString("compq"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("vt"), JInt("ldvt"), JDoubleArray("q"), JIntArray("iq"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dbdsqr", JString("uplo"), JInt("n"), JInt("ncvt"), JInt("nru"), JInt("ncc"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("vt"), JInt("ldvt"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "ddisna", JString("job"), JInt("m"), JInt("n"), JDoubleArray("d"), JDoubleArray("sep"), JIntW("info")),
Routine ( "dgbbrd", JString("vect"), JInt("m"), JInt("n"), JInt("ncc"), JInt("kl"), JInt("ku"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("pt"), JInt("ldpt"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgbcon", JString("norm"), JInt("n"), JInt("kl"), JInt("ku"), JDoubleArray("ab"), JInt("ldab"), JIntArray("ipiv"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgbequ", JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("r"), JDoubleArray("c"), JDoubleW("rowcnd"), JDoubleW("colcnd"), JDoubleW("amax"), JIntW("info")),
Routine ( "dgbrfs", JString("trans"), JInt("n"), JInt("kl"), JInt("ku"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("afb"), JInt("ldafb"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgbsv", JInt("n"), JInt("kl"), JInt("ku"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dgbsvx", JString("fact"), JString("trans"), JInt("n"), JInt("kl"), JInt("ku"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("afb"), JInt("ldafb"), JIntArray("ipiv"), JStringW("equed"), JDoubleArray("r"), JDoubleArray("c"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgbtf2", JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JDoubleArray("ab"), JInt("ldab"), JIntArray("ipiv"), JIntW("info")),
Routine ( "dgbtrf", JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JDoubleArray("ab"), JInt("ldab"), JIntArray("ipiv"), JIntW("info")),
Routine ( "dgbtrs", JString("trans"), JInt("n"), JInt("kl"), JInt("ku"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dgebak", JString("job"), JString("side"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("scale"), JInt("m"), JDoubleArray("v"), JInt("ldv"), JIntW("info")),
Routine ( "dgebal", JString("job"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("ilo"), JIntW("ihi"), JDoubleArray("scale"), JIntW("info")),
Routine ( "dgebd2", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("tauq"), JDoubleArray("taup"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgebrd", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("tauq"), JDoubleArray("taup"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgecon", JString("norm"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgeequ", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("r"), JDoubleArray("c"), JDoubleW("rowcnd"), JDoubleW("colcnd"), JDoubleW("amax"), JIntW("info")),
Routine_NI( "dgees", JString("jobvs"), JString("sort"), JObject("select"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("sdim"), JDoubleArray("wr"), JDoubleArray("wi"), JDoubleArray("vs"), JInt("ldvs"), JDoubleArray("work"), JInt("lwork"), JBooleanArray("bwork"), JIntW("info")),
Routine_NI( "dgeesx", JString("jobvs"), JString("sort"), JObject("select"), JString("sense"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("sdim"), JDoubleArray("wr"), JDoubleArray("wi"), JDoubleArray("vs"), JInt("ldvs"), JDoubleW("rconde"), JDoubleW("rcondv"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JBooleanArray("bwork"), JIntW("info")),
Routine ( "dgeev", JString("jobvl"), JString("jobvr"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("wr"), JDoubleArray("wi"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgeevx", JString("balanc"), JString("jobvl"), JString("jobvr"), JString("sense"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("wr"), JDoubleArray("wi"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JIntW("ilo"), JIntW("ihi"), JDoubleArray("scale"), JDoubleW("abnrm"), JDoubleArray("rconde"), JDoubleArray("rcondv"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgegs", JString("jobvsl"), JString("jobvsr"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleArray("vsl"), JInt("ldvsl"), JDoubleArray("vsr"), JInt("ldvsr"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgegv", JString("jobvl"), JString("jobvr"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgehd2", JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgehrd", JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgelq2", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgelqf", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgels", JString("trans"), JInt("m"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgelsd", JInt("m"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("s"), JDouble("rcond"), JIntW("rank"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgelss", JInt("m"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("s"), JDouble("rcond"), JIntW("rank"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgelsx", JInt("m"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntArray("jpvt"), JDouble("rcond"), JIntW("rank"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgelsy", JInt("m"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntArray("jpvt"), JDouble("rcond"), JIntW("rank"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgeql2", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgeqlf", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgeqp3", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("jpvt"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgeqpf", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("jpvt"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgeqr2", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgeqrf", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgerfs", JString("trans"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("af"), JInt("ldaf"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgerq2", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgerqf", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgesc2", JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("rhs"), JIntArray("ipiv"), JIntArray("jpiv"), JDoubleW("scale")),
Routine ( "dgesdd", JString("jobz"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("s"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("vt"), JInt("ldvt"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgesv", JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dgesvd", JString("jobu"), JString("jobvt"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("s"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("vt"), JInt("ldvt"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgesvx", JString("fact"), JString("trans"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("af"), JInt("ldaf"), JIntArray("ipiv"), JStringW("equed"), JDoubleArray("r"), JDoubleArray("c"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgetc2", JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JIntArray("jpiv"), JIntW("info")),
Routine ( "dgetf2", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JIntW("info")),
Routine ( "dgetrf", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JIntW("info")),
Routine ( "dgetri", JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgetrs", JString("trans"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dggbak", JString("job"), JString("side"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("lscale"), JDoubleArray("rscale"), JInt("m"), JDoubleArray("v"), JInt("ldv"), JIntW("info")),
Routine ( "dggbal", JString("job"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntW("ilo"), JIntW("ihi"), JDoubleArray("lscale"), JDoubleArray("rscale"), JDoubleArray("work"), JIntW("info")),
Routine_NI( "dgges", JString("jobvsl"), JString("jobvsr"), JString("sort"), JObject("selctg"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntW("sdim"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleArray("vsl"), JInt("ldvsl"), JDoubleArray("vsr"), JInt("ldvsr"), JDoubleArray("work"), JInt("lwork"), JBooleanArray("bwork"), JIntW("info")),
Routine_NI( "dggesx", JString("jobvsl"), JString("jobvsr"), JString("sort"), JObject("selctg"), JString("sense"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntW("sdim"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleArray("vsl"), JInt("ldvsl"), JDoubleArray("vsr"), JInt("ldvsr"), JDoubleArray("rconde"), JDoubleArray("rcondv"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JBooleanArray("bwork"), JIntW("info")),
Routine ( "dggev", JString("jobvl"), JString("jobvr"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dggevx", JString("balanc"), JString("jobvl"), JString("jobvr"), JString("sense"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JIntW("ilo"), JIntW("ihi"), JDoubleArray("lscale"), JDoubleArray("rscale"), JDoubleW("abnrm"), JDoubleW("bbnrm"), JDoubleArray("rconde"), JDoubleArray("rcondv"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JBooleanArray("bwork"), JIntW("info")),
Routine ( "dggglm", JInt("n"), JInt("m"), JInt("p"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("d"), JDoubleArray("x"), JDoubleArray("y"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dgghrd", JString("compq"), JString("compz"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("z"), JInt("ldz"), JIntW("info")),
Routine ( "dgglse", JInt("m"), JInt("n"), JInt("p"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("c"), JDoubleArray("d"), JDoubleArray("x"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dggqrf", JInt("n"), JInt("m"), JInt("p"), JDoubleArray("a"), JInt("lda"), JDoubleArray("taua"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("taub"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dggrqf", JInt("m"), JInt("p"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("taua"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("taub"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dggsvd", JString("jobu"), JString("jobv"), JString("jobq"), JInt("m"), JInt("n"), JInt("p"), JIntW("k"), JIntW("l"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("alpha"), JDoubleArray("beta"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("v"), JInt("ldv"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dggsvp", JString("jobu"), JString("jobv"), JString("jobq"), JInt("m"), JInt("p"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDouble("tola"), JDouble("tolb"), JIntW("k"), JIntW("l"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("v"), JInt("ldv"), JDoubleArray("q"), JInt("ldq"), JIntArray("iwork"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dgtcon", JString("norm"), JInt("n"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du"), JDoubleArray("du2"), JIntArray("ipiv"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgtrfs", JString("trans"), JInt("n"), JInt("nrhs"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du"), JDoubleArray("dlf"), JDoubleArray("df"), JDoubleArray("duf"), JDoubleArray("du2"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgtsv", JInt("n"), JInt("nrhs"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dgtsvx", JString("fact"), JString("trans"), JInt("n"), JInt("nrhs"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du"), JDoubleArray("dlf"), JDoubleArray("df"), JDoubleArray("duf"), JDoubleArray("du2"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dgttrf", JInt("n"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du"), JDoubleArray("du2"), JIntArray("ipiv"), JIntW("info")),
Routine ( "dgttrs", JString("trans"), JInt("n"), JInt("nrhs"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du"), JDoubleArray("du2"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dgtts2", JInt("itrans"), JInt("n"), JInt("nrhs"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du"), JDoubleArray("du2"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb")),
Routine ( "dhgeqz", JString("job"), JString("compq"), JString("compz"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("h"), JInt("ldh"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dhsein", JString("side"), JString("eigsrc"), JString("initv"), JBooleanArray("select"), JInt("n"), JDoubleArray("h"), JInt("ldh"), JDoubleArray("wr"), JDoubleArray("wi"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JInt("mm"), JIntW("m"), JDoubleArray("work"), JIntArray("ifaill"), JIntArray("ifailr"), JIntW("info")),
Routine ( "dhseqr", JString("job"), JString("compz"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("h"), JInt("ldh"), JDoubleArray("wr"), JDoubleArray("wi"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
RoutineR (JBooleanR(), "disnan", JDouble("din")),
Routine ( "dlabad", JDoubleW("small"), JDoubleW("large")),
Routine ( "dlabrd", JInt("m"), JInt("n"), JInt("nb"), JDoubleArray("a"), JInt("lda"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("tauq"), JDoubleArray("taup"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("y"), JInt("ldy")),
Routine ( "dlacn2", JInt("n"), JDoubleArray("v"), JDoubleArray("x"), JIntArray("isgn"), JDoubleW("est"), JIntW("kase"), JIntArray("isave")),
Routine ( "dlacon", JInt("n"), JDoubleArray("v"), JDoubleArray("x"), JIntArray("isgn"), JDoubleW("est"), JIntW("kase")),
Routine ( "dlacpy", JString("uplo"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb")),
Routine ( "dladiv", JDouble("a"), JDouble("b"), JDouble("c"), JDouble("d"), JDoubleW("p"), JDoubleW("q")),
Routine ( "dlae2", JDouble("a"), JDouble("b"), JDouble("c"), JDoubleW("rt1"), JDoubleW("rt2")),
Routine ( "dlaebz", JInt("ijob"), JInt("nitmax"), JInt("n"), JInt("mmax"), JInt("minp"), JInt("nbmin"), JDouble("abstol"), JDouble("reltol"), JDouble("pivmin"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("e2"), JIntArray("nval"), JDoubleArray("ab"), JDoubleArray("c"), JIntW("mout"), JIntArray("nab"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlaed0", JInt("icompq"), JInt("qsiz"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("qstore"), JInt("ldqs"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlaed1", JInt("n"), JDoubleArray("d"), JDoubleArray("q"), JInt("ldq"), JIntArray("indxq"), JDoubleW("rho"), JInt("cutpnt"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlaed2", JIntW("k"), JInt("n"), JInt("n1"), JDoubleArray("d"), JDoubleArray("q"), JInt("ldq"), JIntArray("indxq"), JDoubleW("rho"), JDoubleArray("z"), JDoubleArray("dlamda"), JDoubleArray("w"), JDoubleArray("q2"), JIntArray("indx"), JIntArray("indxc"), JIntArray("indxp"), JIntArray("coltyp"), JIntW("info")),
Routine ( "dlaed3", JInt("k"), JInt("n"), JInt("n1"), JDoubleArray("d"), JDoubleArray("q"), JInt("ldq"), JDouble("rho"), JDoubleArray("dlamda"), JDoubleArray("q2"), JIntArray("indx"), JIntArray("ctot"), JDoubleArray("w"), JDoubleArray("s"), JIntW("info")),
Routine ( "dlaed4", JInt("n"), JInt("i"), JDoubleArray("d"), JDoubleArray("z"), JDoubleArray("delta"), JDouble("rho"), JDoubleW("dlam"), JIntW("info")),
Routine ( "dlaed5", JInt("i"), JDoubleArray("d"), JDoubleArray("z"), JDoubleArray("delta"), JDouble("rho"), JDoubleW("dlam")),
Routine ( "dlaed6", JInt("kniter"), JBoolean("orgati"), JDouble("rho"), JDoubleArray("d"), JDoubleArray("z"), JDouble("finit"), JDoubleW("tau"), JIntW("info")),
Routine ( "dlaed7", JInt("icompq"), JInt("n"), JInt("qsiz"), JInt("tlvls"), JInt("curlvl"), JInt("curpbm"), JDoubleArray("d"), JDoubleArray("q"), JInt("ldq"), JIntArray("indxq"), JDoubleW("rho"), JInt("cutpnt"), JDoubleArray("qstore"), JIntArray("qptr"), JIntArray("prmptr"), JIntArray("perm"), JIntArray("givptr"), JIntArray("givcol"), JDoubleArray("givnum"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlaed8", JInt("icompq"), JIntW("k"), JInt("n"), JInt("qsiz"), JDoubleArray("d"), JDoubleArray("q"), JInt("ldq"), JIntArray("indxq"), JDoubleW("rho"), JInt("cutpnt"), JDoubleArray("z"), JDoubleArray("dlamda"), JDoubleArray("q2"), JInt("ldq2"), JDoubleArray("w"), JIntArray("perm"), JIntW("givptr"), JIntArray("givcol"), JDoubleArray("givnum"), JIntArray("indxp"), JIntArray("indx"), JIntW("info")),
Routine ( "dlaed9", JInt("k"), JInt("kstart"), JInt("kstop"), JInt("n"), JDoubleArray("d"), JDoubleArray("q"), JInt("ldq"), JDouble("rho"), JDoubleArray("dlamda"), JDoubleArray("w"), JDoubleArray("s"), JInt("lds"), JIntW("info")),
Routine ( "dlaeda", JInt("n"), JInt("tlvls"), JInt("curlvl"), JInt("curpbm"), JIntArray("prmptr"), JIntArray("perm"), JIntArray("givptr"), JIntArray("givcol"), JDoubleArray("givnum"), JDoubleArray("q"), JIntArray("qptr"), JDoubleArray("z"), JDoubleArray("ztemp"), JIntW("info")),
Routine ( "dlaein", JBoolean("rightv"), JBoolean("noinit"), JInt("n"), JDoubleArray("h"), JInt("ldh"), JDouble("wr"), JDouble("wi"), JDoubleArray("vr"), JDoubleArray("vi"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("work"), JDouble("eps3"), JDouble("smlnum"), JDouble("bignum"), JIntW("info")),
Routine ( "dlaev2", JDouble("a"), JDouble("b"), JDouble("c"), JDoubleW("rt1"), JDoubleW("rt2"), JDoubleW("cs1"), JDoubleW("sn1")),
Routine ( "dlaexc", JBoolean("wantq"), JInt("n"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("q"), JInt("ldq"), JInt("j1"), JInt("n1"), JInt("n2"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlag2", JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDouble("safmin"), JDoubleW("scale1"), JDoubleW("scale2"), JDoubleW("wr1"), JDoubleW("wr2"), JDoubleW("wi")),
Routine ( "dlag2s", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JFloatArray("sa"), JInt("ldsa"), JIntW("info")),
Routine ( "dlags2", JBoolean("upper"), JDouble("a1"), JDouble("a2"), JDouble("a3"), JDouble("b1"), JDouble("b2"), JDouble("b3"), JDoubleW("csu"), JDoubleW("snu"), JDoubleW("csv"), JDoubleW("snv"), JDoubleW("csq"), JDoubleW("snq")),
Routine ( "dlagtf", JInt("n"), JDoubleArray("a"), JDouble("lambda"), JDoubleArray("b"), JDoubleArray("c"), JDouble("tol"), JDoubleArray("d"), JIntArray("in"), JIntW("info")),
Routine ( "dlagtm", JString("trans"), JInt("n"), JInt("nrhs"), JDouble("alpha"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du"), JDoubleArray("x"), JInt("ldx"), JDouble("beta"), JDoubleArray("b"), JInt("ldb")),
Routine ( "dlagts", JInt("job"), JInt("n"), JDoubleArray("a"), JDoubleArray("b"), JDoubleArray("c"), JDoubleArray("d"), JIntArray("in"), JDoubleArray("y"), JDoubleW("tol"), JIntW("info")),
Routine ( "dlagv2", JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleW("csl"), JDoubleW("snl"), JDoubleW("csr"), JDoubleW("snr")),
Routine ( "dlahqr", JBoolean("wantt"), JBoolean("wantz"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("h"), JInt("ldh"), JDoubleArray("wr"), JDoubleArray("wi"), JInt("iloz"), JInt("ihiz"), JDoubleArray("z"), JInt("ldz"), JIntW("info")),
Routine ( "dlahr2", JInt("n"), JInt("k"), JInt("nb"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("y"), JInt("ldy")),
Routine ( "dlahrd", JInt("n"), JInt("k"), JInt("nb"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("y"), JInt("ldy")),
Routine ( "dlaic1", JInt("job"), JInt("j"), JDoubleArray("x"), JDouble("sest"), JDoubleArray("w"), JDouble("gamma"), JDoubleW("sestpr"), JDoubleW("s"), JDoubleW("c")),
RoutineR (JBooleanR(), "dlaisnan", JDouble("din1"), JDouble("din2")),
Routine ( "dlaln2", JBoolean("ltrans"), JInt("na"), JInt("nw"), JDouble("smin"), JDouble("ca"), JDoubleArray("a"), JInt("lda"), JDouble("d1"), JDouble("d2"), JDoubleArray("b"), JInt("ldb"), JDouble("wr"), JDouble("wi"), JDoubleArray("x"), JInt("ldx"), JDoubleW("scale"), JDoubleW("xnorm"), JIntW("info")),
Routine ( "dlals0", JInt("icompq"), JInt("nl"), JInt("nr"), JInt("sqre"), JInt("nrhs"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("bx"), JInt("ldbx"), JIntArray("perm"), JInt("givptr"), JIntArray("givcol"), JInt("ldgcol"), JDoubleArray("givnum"), JInt("ldgnum"), JDoubleArray("poles"), JDoubleArray("difl"), JDoubleArray("difr"), JDoubleArray("z"), JInt("k"), JDouble("c"), JDouble("s"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlalsa", JInt("icompq"), JInt("smlsiz"), JInt("n"), JInt("nrhs"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("bx"), JInt("ldbx"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("vt"), JIntArray("k"), JDoubleArray("difl"), JDoubleArray("difr"), JDoubleArray("z"), JDoubleArray("poles"), JIntArray("givptr"), JIntArray("givcol"), JInt("ldgcol"), JIntArray("perm"), JDoubleArray("givnum"), JDoubleArray("c"), JDoubleArray("s"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlalsd", JString("uplo"), JInt("smlsiz"), JInt("n"), JInt("nrhs"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("b"), JInt("ldb"), JDouble("rcond"), JIntW("rank"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlamrg", JInt("n1"), JInt("n2"), JDoubleArray("a"), JInt("dtrd1"), JInt("dtrd2"), JIntArray("index")),
RoutineR (JIntR(), "dlaneg", JInt("n"), JDoubleArray("d"), JDoubleArray("lld"), JDouble("sigma"), JDouble("pivmin"), JInt("r")),
RoutineR (JDoubleR(), "dlangb", JString("norm"), JInt("n"), JInt("kl"), JInt("ku"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("work")),
RoutineR (JDoubleR(), "dlange", JString("norm"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("work")),
RoutineR (JDoubleR(), "dlangt", JString("norm"), JInt("n"), JDoubleArray("dl"), JDoubleArray("d"), JDoubleArray("du")),
RoutineR (JDoubleR(), "dlanhs", JString("norm"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("work")),
RoutineR (JDoubleR(), "dlansb", JString("norm"), JString("uplo"), JInt("n"), JInt("k"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("work")),
RoutineR (JDoubleR(), "dlansp", JString("norm"), JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("work")),
RoutineR (JDoubleR(), "dlanst", JString("norm"), JInt("n"), JDoubleArray("d"), JDoubleArray("e")),
RoutineR (JDoubleR(), "dlansy", JString("norm"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("work")),
RoutineR (JDoubleR(), "dlantb", JString("norm"), JString("uplo"), JString("diag"), JInt("n"), JInt("k"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("work")),
RoutineR (JDoubleR(), "dlantp", JString("norm"), JString("uplo"), JString("diag"), JInt("n"), JDoubleArray("ap"), JDoubleArray("work")),
RoutineR (JDoubleR(), "dlantr", JString("norm"), JString("uplo"), JString("diag"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("work")),
Routine ( "dlanv2", JDoubleW("a"), JDoubleW("b"), JDoubleW("c"), JDoubleW("d"), JDoubleW("rt1r"), JDoubleW("rt1i"), JDoubleW("rt2r"), JDoubleW("rt2i"), JDoubleW("cs"), JDoubleW("sn")),
Routine ( "dlapll", JInt("n"), JDoubleArray("x"), JInt("incx"), JDoubleArray("y"), JInt("incy"), JDoubleW("ssmin")),
Routine ( "dlapmt", JBoolean("forwrd"), JInt("m"), JInt("n"), JDoubleArray("x"), JInt("ldx"), JIntArray("k")),
RoutineR (JDoubleR(), "dlapy2", JDouble("x"), JDouble("y")),
RoutineR (JDoubleR(), "dlapy3", JDouble("x"), JDouble("y"), JDouble("z")),
Routine ( "dlaqgb", JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("r"), JDoubleArray("c"), JDouble("rowcnd"), JDouble("colcnd"), JDouble("amax"), JStringW("equed")),
Routine ( "dlaqge", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("r"), JDoubleArray("c"), JDouble("rowcnd"), JDouble("colcnd"), JDouble("amax"), JStringW("equed")),
Routine ( "dlaqp2", JInt("m"), JInt("n"), JInt("offset"), JDoubleArray("a"), JInt("lda"), JIntArray("jpvt"), JDoubleArray("tau"), JDoubleArray("vn1"), JDoubleArray("vn2"), JDoubleArray("work")),
Routine ( "dlaqps", JInt("m"), JInt("n"), JInt("offset"), JInt("nb"), JIntW("kb"), JDoubleArray("a"), JInt("lda"), JIntArray("jpvt"), JDoubleArray("tau"), JDoubleArray("vn1"), JDoubleArray("vn2"), JDoubleArray("auxv"), JDoubleArray("f"), JInt("ldf")),
Routine ( "dlaqr0", JBoolean("wantt"), JBoolean("wantz"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("h"), JInt("ldh"), JDoubleArray("wr"), JDoubleArray("wi"), JInt("iloz"), JInt("ihiz"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dlaqr1", JInt("n"), JDoubleArray("h"), JInt("ldh"), JDouble("sr1"), JDouble("si1"), JDouble("sr2"), JDouble("si2"), JDoubleArray("v")),
Routine ( "dlaqr2", JBoolean("wantt"), JBoolean("wantz"), JInt("n"), JInt("ktop"), JInt("kbot"), JInt("nw"), JDoubleArray("h"), JInt("ldh"), JInt("iloz"), JInt("ihiz"), JDoubleArray("z"), JInt("ldz"), JIntW("ns"), JIntW("nd"), JDoubleArray("sr"), JDoubleArray("si"), JDoubleArray("v"), JInt("ldv"), JInt("nh"), JDoubleArray("t"), JInt("ldt"), JInt("nv"), JDoubleArray("wv"), JInt("ldwv"), JDoubleArray("work"), JInt("lwork")),
Routine ( "dlaqr3", JBoolean("wantt"), JBoolean("wantz"), JInt("n"), JInt("ktop"), JInt("kbot"), JInt("nw"), JDoubleArray("h"), JInt("ldh"), JInt("iloz"), JInt("ihiz"), JDoubleArray("z"), JInt("ldz"), JIntW("ns"), JIntW("nd"), JDoubleArray("sr"), JDoubleArray("si"), JDoubleArray("v"), JInt("ldv"), JInt("nh"), JDoubleArray("t"), JInt("ldt"), JInt("nv"), JDoubleArray("wv"), JInt("ldwv"), JDoubleArray("work"), JInt("lwork")),
Routine ( "dlaqr4", JBoolean("wantt"), JBoolean("wantz"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("h"), JInt("ldh"), JDoubleArray("wr"), JDoubleArray("wi"), JInt("iloz"), JInt("ihiz"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dlaqr5", JBoolean("wantt"), JBoolean("wantz"), JInt("kacc22"), JInt("n"), JInt("ktop"), JInt("kbot"), JInt("nshfts"), JDoubleArray("sr"), JDoubleArray("si"), JDoubleArray("h"), JInt("ldh"), JInt("iloz"), JInt("ihiz"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("v"), JInt("ldv"), JDoubleArray("u"), JInt("ldu"), JInt("nv"), JDoubleArray("wv"), JInt("ldwv"), JInt("nh"), JDoubleArray("wh"), JInt("ldwh")),
Routine ( "dlaqsb", JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("s"), JDouble("scond"), JDouble("amax"), JStringW("equed")),
Routine ( "dlaqsp", JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("s"), JDouble("scond"), JDouble("amax"), JStringW("equed")),
Routine ( "dlaqsy", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("s"), JDouble("scond"), JDouble("amax"), JStringW("equed")),
Routine ( "dlaqtr", JBoolean("ltran"), JBoolean("lreal"), JInt("n"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("b"), JDouble("w"), JDoubleW("scale"), JDoubleArray("x"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlar1v", JInt("n"), JInt("b1"), JInt("bn"), JDouble("lambda"), JDoubleArray("d"), JDoubleArray("l"), JDoubleArray("ld"), JDoubleArray("lld"), JDouble("pivmin"), JDouble("gaptol"), JDoubleArray("z"), JBoolean("wantnc"), JIntW("negcnt"), JDoubleW("ztz"), JDoubleW("mingma"), JIntW("r"), JIntArray("isuppz"), JDoubleW("nrminv"), JDoubleW("resid"), JDoubleW("rqcorr"), JDoubleArray("work")),
Routine ( "dlar2v", JInt("n"), JDoubleArray("x"), JDoubleArray("y"), JDoubleArray("z"), JInt("incx"), JDoubleArray("c"), JDoubleArray("s"), JInt("incc")),
Routine ( "dlarf", JString("side"), JInt("m"), JInt("n"), JDoubleArray("v"), JInt("incv"), JDouble("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work")),
Routine ( "dlarfb", JString("side"), JString("trans"), JString("direct"), JString("storev"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("v"), JInt("ldv"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("ldwork")),
Routine ( "dlarfg", JInt("n"), JDoubleW("alpha"), JDoubleArray("x"), JInt("incx"), JDoubleW("tau")),
Routine ( "dlarft", JString("direct"), JString("storev"), JInt("n"), JInt("k"), JDoubleArray("v"), JInt("ldv"), JDoubleArray("tau"), JDoubleArray("t"), JInt("ldt")),
Routine ( "dlarfx", JString("side"), JInt("m"), JInt("n"), JDoubleArray("v"), JDouble("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work")),
Routine ( "dlargv", JInt("n"), JDoubleArray("x"), JInt("incx"), JDoubleArray("y"), JInt("incy"), JDoubleArray("c"), JInt("incc")),
Routine ( "dlarnv", JInt("idist"), JIntArray("iseed"), JInt("n"), JDoubleArray("x")),
Routine ( "dlarra", JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("e2"), JDouble("spltol"), JDouble("tnrm"), JIntW("nsplit"), JIntArray("isplit"), JIntW("info")),
Routine ( "dlarrb", JInt("n"), JDoubleArray("d"), JDoubleArray("lld"), JInt("ifirst"), JInt("ilast"), JDouble("rtol1"), JDouble("rtol2"), JInt("offset"), JDoubleArray("w"), JDoubleArray("wgap"), JDoubleArray("werr"), JDoubleArray("work"), JIntArray("iwork"), JDouble("pivmin"), JDouble("spdiam"), JInt("twist"), JIntW("info")),
Routine ( "dlarrc", JString("jobt"), JInt("n"), JDouble("vl"), JDouble("vu"), JDoubleArray("d"), JDoubleArray("e"), JDouble("pivmin"), JIntW("eigcnt"), JIntW("lcnt"), JIntW("rcnt"), JIntW("info")),
Routine ( "dlarrd", JString("range"), JString("order"), JInt("n"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDoubleArray("gers"), JDouble("reltol"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("e2"), JDouble("pivmin"), JInt("nsplit"), JIntArray("isplit"), JIntW("m"), JDoubleArray("w"), JDoubleArray("werr"), JDoubleW("wl"), JDoubleW("wu"), JIntArray("iblock"), JIntArray("indexw"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlarre", JString("range"), JInt("n"), JDoubleW("vl"), JDoubleW("vu"), JInt("il"), JInt("iu"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("e2"), JDouble("rtol1"), JDouble("rtol2"), JDouble("spltol"), JIntW("nsplit"), JIntArray("isplit"), JIntW("m"), JDoubleArray("w"), JDoubleArray("werr"), JDoubleArray("wgap"), JIntArray("iblock"), JIntArray("indexw"), JDoubleArray("gers"), JDoubleW("pivmin"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlarrf", JInt("n"), JDoubleArray("d"), JDoubleArray("l"), JDoubleArray("ld"), JInt("clstrt"), JInt("clend"), JDoubleArray("w"), JDoubleArray("wgap"), JDoubleArray("werr"), JDouble("spdiam"), JDouble("clgapl"), JDouble("clgapr"), JDouble("pivmin"), JDoubleW("sigma"), JDoubleArray("dplus"), JDoubleArray("lplus"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlarrj", JInt("n"), JDoubleArray("d"), JDoubleArray("e2"), JInt("ifirst"), JInt("ilast"), JDouble("rtol"), JInt("offset"), JDoubleArray("w"), JDoubleArray("werr"), JDoubleArray("work"), JIntArray("iwork"), JDouble("pivmin"), JDouble("spdiam"), JIntW("info")),
Routine ( "dlarrk", JInt("n"), JInt("iw"), JDouble("gl"), JDouble("gu"), JDoubleArray("d"), JDoubleArray("e2"), JDouble("pivmin"), JDouble("reltol"), JDoubleW("w"), JDoubleW("werr"), JIntW("info")),
Routine ( "dlarrr", JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JIntW("info")),
Routine ( "dlarrv", JInt("n"), JDouble("vl"), JDouble("vu"), JDoubleArray("d"), JDoubleArray("l"), JDouble("pivmin"), JIntArray("isplit"), JInt("m"), JInt("dol"), JInt("dou"), JDouble("minrgp"), JDoubleW("rtol1"), JDoubleW("rtol2"), JDoubleArray("w"), JDoubleArray("werr"), JDoubleArray("wgap"), JIntArray("iblock"), JIntArray("indexw"), JDoubleArray("gers"), JDoubleArray("z"), JInt("ldz"), JIntArray("isuppz"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlartg", JDouble("f"), JDouble("g"), JDoubleW("cs"), JDoubleW("sn"), JDoubleW("r")),
Routine ( "dlartv", JInt("n"), JDoubleArray("x"), JInt("incx"), JDoubleArray("y"), JInt("incy"), JDoubleArray("c"), JDoubleArray("s"), JInt("incc")),
Routine ( "dlaruv", JIntArray("iseed"), JInt("n"), JDoubleArray("x")),
Routine ( "dlarz", JString("side"), JInt("m"), JInt("n"), JInt("l"), JDoubleArray("v"), JInt("incv"), JDouble("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work")),
Routine ( "dlarzb", JString("side"), JString("trans"), JString("direct"), JString("storev"), JInt("m"), JInt("n"), JInt("k"), JInt("l"), JDoubleArray("v"), JInt("ldv"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("ldwork")),
Routine ( "dlarzt", JString("direct"), JString("storev"), JInt("n"), JInt("k"), JDoubleArray("v"), JInt("ldv"), JDoubleArray("tau"), JDoubleArray("t"), JInt("ldt")),
Routine ( "dlas2", JDouble("f"), JDouble("g"), JDouble("h"), JDoubleW("ssmin"), JDoubleW("ssmax")),
Routine ( "dlascl", JString("type"), JInt("kl"), JInt("ku"), JDouble("cfrom"), JDouble("cto"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("info")),
Routine ( "dlasd0", JInt("n"), JInt("sqre"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("vt"), JInt("ldvt"), JInt("smlsiz"), JIntArray("iwork"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlasd1", JInt("nl"), JInt("nr"), JInt("sqre"), JDoubleArray("d"), JDoubleW("alpha"), JDoubleW("beta"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("vt"), JInt("ldvt"), JIntArray("idxq"), JIntArray("iwork"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlasd2", JInt("nl"), JInt("nr"), JInt("sqre"), JIntW("k"), JDoubleArray("d"), JDoubleArray("z"), JDouble("alpha"), JDouble("beta"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("vt"), JInt("ldvt"), JDoubleArray("dsigma"), JDoubleArray("u2"), JInt("ldu2"), JDoubleArray("vt2"), JInt("ldvt2"), JIntArray("idxp"), JIntArray("idx"), JIntArray("idxc"), JIntArray("idxq"), JIntArray("coltyp"), JIntW("info")),
Routine ( "dlasd3", JInt("nl"), JInt("nr"), JInt("sqre"), JInt("k"), JDoubleArray("d"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("dsigma"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("u2"), JInt("ldu2"), JDoubleArray("vt"), JInt("ldvt"), JDoubleArray("vt2"), JInt("ldvt2"), JIntArray("idxc"), JIntArray("ctot"), JDoubleArray("z"), JIntW("info")),
Routine ( "dlasd4", JInt("n"), JInt("i"), JDoubleArray("d"), JDoubleArray("z"), JDoubleArray("delta"), JDouble("rho"), JDoubleW("sigma"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlasd5", JInt("i"), JDoubleArray("d"), JDoubleArray("z"), JDoubleArray("delta"), JDouble("rho"), JDoubleW("dsigma"), JDoubleArray("work")),
Routine ( "dlasd6", JInt("icompq"), JInt("nl"), JInt("nr"), JInt("sqre"), JDoubleArray("d"), JDoubleArray("vf"), JDoubleArray("vl"), JDoubleW("alpha"), JDoubleW("beta"), JIntArray("idxq"), JIntArray("perm"), JIntW("givptr"), JIntArray("givcol"), JInt("ldgcol"), JDoubleArray("givnum"), JInt("ldgnum"), JDoubleArray("poles"), JDoubleArray("difl"), JDoubleArray("difr"), JDoubleArray("z"), JIntW("k"), JDoubleW("c"), JDoubleW("s"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlasd7", JInt("icompq"), JInt("nl"), JInt("nr"), JInt("sqre"), JIntW("k"), JDoubleArray("d"), JDoubleArray("z"), JDoubleArray("zw"), JDoubleArray("vf"), JDoubleArray("vfw"), JDoubleArray("vl"), JDoubleArray("vlw"), JDouble("alpha"), JDouble("beta"), JDoubleArray("dsigma"), JIntArray("idx"), JIntArray("idxp"), JIntArray("idxq"), JIntArray("perm"), JIntW("givptr"), JIntArray("givcol"), JInt("ldgcol"), JDoubleArray("givnum"), JInt("ldgnum"), JDoubleW("c"), JDoubleW("s"), JIntW("info")),
Routine ( "dlasd8", JInt("icompq"), JInt("k"), JDoubleArray("d"), JDoubleArray("z"), JDoubleArray("vf"), JDoubleArray("vl"), JDoubleArray("difl"), JDoubleArray("difr"), JInt("lddifr"), JDoubleArray("dsigma"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlasda", JInt("icompq"), JInt("smlsiz"), JInt("n"), JInt("sqre"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("vt"), JIntArray("k"), JDoubleArray("difl"), JDoubleArray("difr"), JDoubleArray("z"), JDoubleArray("poles"), JIntArray("givptr"), JIntArray("givcol"), JInt("ldgcol"), JIntArray("perm"), JDoubleArray("givnum"), JDoubleArray("c"), JDoubleArray("s"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dlasdq", JString("uplo"), JInt("sqre"), JInt("n"), JInt("ncvt"), JInt("nru"), JInt("ncc"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("vt"), JInt("ldvt"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlasdt", JInt("n"), JIntW("lvl"), JIntW("nd"), JIntArray("inode"), JIntArray("ndiml"), JIntArray("ndimr"), JInt("msub")),
Routine ( "dlaset", JString("uplo"), JInt("m"), JInt("n"), JDouble("alpha"), JDouble("beta"), JDoubleArray("a"), JInt("lda")),
Routine ( "dlasq1", JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("work"), JIntW("info")),
Routine ( "dlasq2", JInt("n"), JDoubleArray("z"), JIntW("info")),
Routine ( "dlasq3", JInt("i0"), JIntW("n0"), JDoubleArray("z"), JInt("pp"), JDoubleW("dmin"), JDoubleW("sigma"), JDoubleW("desig"), JDoubleW("qmax"), JIntW("nfail"), JIntW("iter"), JIntW("ndiv"), JBoolean("ieee")),
Routine ( "dlasq4", JInt("i0"), JInt("n0"), JDoubleArray("z"), JInt("pp"), JInt("n0in"), JDouble("dmin"), JDouble("dmin1"), JDouble("dmin2"), JDouble("dn"), JDouble("dn1"), JDouble("dn2"), JDoubleW("tau"), JIntW("ttype")),
Routine ( "dlasq5", JInt("i0"), JInt("n0"), JDoubleArray("z"), JInt("pp"), JDouble("tau"), JDoubleW("dmin"), JDoubleW("dmin1"), JDoubleW("dmin2"), JDoubleW("dn"), JDoubleW("dnm1"), JDoubleW("dnm2"), JBoolean("ieee")),
Routine ( "dlasq6", JInt("i0"), JInt("n0"), JDoubleArray("z"), JInt("pp"), JDoubleW("dmin"), JDoubleW("dmin1"), JDoubleW("dmin2"), JDoubleW("dn"), JDoubleW("dnm1"), JDoubleW("dnm2")),
Routine ( "dlasr", JString("side"), JString("pivot"), JString("direct"), JInt("m"), JInt("n"), JDoubleArray("c"), JDoubleArray("s"), JDoubleArray("a"), JInt("lda")),
Routine ( "dlasrt", JString("id"), JInt("n"), JDoubleArray("d"), JIntW("info")),
Routine ( "dlassq", JInt("n"), JDoubleArray("x"), JInt("incx"), JDoubleW("scale"), JDoubleW("sumsq")),
Routine ( "dlasv2", JDouble("f"), JDouble("g"), JDouble("h"), JDoubleW("ssmin"), JDoubleW("ssmax"), JDoubleW("snr"), JDoubleW("csr"), JDoubleW("snl"), JDoubleW("csl")),
Routine ( "dlaswp", JInt("n"), JDoubleArray("a"), JInt("lda"), JInt("k1"), JInt("k2"), JIntArray("ipiv"), JInt("incx")),
Routine ( "dlasy2", JBoolean("ltranl"), JBoolean("ltranr"), JInt("isgn"), JInt("n1"), JInt("n2"), JDoubleArray("tl"), JInt("ldtl"), JDoubleArray("tr"), JInt("ldtr"), JDoubleArray("b"), JInt("ldb"), JDoubleW("scale"), JDoubleArray("x"), JInt("ldx"), JDoubleW("xnorm"), JIntW("info")),
Routine ( "dlasyf", JString("uplo"), JInt("n"), JInt("nb"), JIntW("kb"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("w"), JInt("ldw"), JIntW("info")),
Routine ( "dlatbs", JString("uplo"), JString("trans"), JString("diag"), JString("normin"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("x"), JDoubleW("scale"), JDoubleArray("cnorm"), JIntW("info")),
Routine ( "dlatdf", JInt("ijob"), JInt("n"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("rhs"), JDoubleW("rdsum"), JDoubleW("rdscal"), JIntArray("ipiv"), JIntArray("jpiv")),
Routine ( "dlatps", JString("uplo"), JString("trans"), JString("diag"), JString("normin"), JInt("n"), JDoubleArray("ap"), JDoubleArray("x"), JDoubleW("scale"), JDoubleArray("cnorm"), JIntW("info")),
Routine ( "dlatrd", JString("uplo"), JInt("n"), JInt("nb"), JDoubleArray("a"), JInt("lda"), JDoubleArray("e"), JDoubleArray("tau"), JDoubleArray("w"), JInt("ldw")),
Routine ( "dlatrs", JString("uplo"), JString("trans"), JString("diag"), JString("normin"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("x"), JDoubleW("scale"), JDoubleArray("cnorm"), JIntW("info")),
Routine ( "dlatrz", JInt("m"), JInt("n"), JInt("l"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work")),
Routine ( "dlatzm", JString("side"), JInt("m"), JInt("n"), JDoubleArray("v"), JInt("incv"), JDouble("tau"), JDoubleArray("c1"), JDoubleArray("c2"), JInt("Ldc"), JDoubleArray("work")),
Routine ( "dlauu2", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("info")),
Routine ( "dlauum", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("info")),
Routine_NI( "dlazq3", JInt("i0"), JIntW("n0"), JDoubleArray("z"), JInt("pp"), JDoubleW("dmin"), JDoubleW("sigma"), JDoubleW("desig"), JDoubleW("qmax"), JIntW("nfail"), JIntW("iter"), JIntW("ndiv"), JBoolean("ieee"), JIntW("ttype"), JDoubleW("dmin1"), JDoubleW("dmin2"), JDoubleW("dn"), JDoubleW("dn1"), JDoubleW("dn2"), JDoubleW("tau")),
Routine_NI( "dlazq4", JInt("i0"), JInt("n0"), JDoubleArray("z"), JInt("pp"), JInt("n0in"), JDouble("dmin"), JDouble("dmin1"), JDouble("dmin2"), JDouble("dn"), JDouble("dn1"), JDouble("dn2"), JDoubleW("tau"), JIntW("ttype"), JDoubleW("g")),
Routine ( "dopgtr", JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("tau"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("work"), JIntW("info")),
Routine ( "dopmtr", JString("side"), JString("uplo"), JString("trans"), JInt("m"), JInt("n"), JDoubleArray("ap"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "dorg2l", JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dorg2r", JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dorgbr", JString("vect"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dorghr", JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dorgl2", JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dorglq", JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dorgql", JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dorgqr", JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dorgr2", JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JIntW("info")),
Routine ( "dorgrq", JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dorgtr", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dorm2l", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "dorm2r", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "dormbr", JString("vect"), JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dormhr", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("ilo"), JInt("ihi"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dorml2", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "dormlq", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dormql", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dormqr", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dormr2", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "dormr3", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JInt("l"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JIntW("info")),
Routine ( "dormrq", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dormrz", JString("side"), JString("trans"), JInt("m"), JInt("n"), JInt("k"), JInt("l"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dormtr", JString("side"), JString("uplo"), JString("trans"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dpbcon", JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dpbequ", JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("s"), JDoubleW("scond"), JDoubleW("amax"), JIntW("info")),
Routine ( "dpbrfs", JString("uplo"), JInt("n"), JInt("kd"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("afb"), JInt("ldafb"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dpbstf", JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JIntW("info")),
Routine ( "dpbsv", JString("uplo"), JInt("n"), JInt("kd"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dpbsvx", JString("fact"), JString("uplo"), JInt("n"), JInt("kd"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("afb"), JInt("ldafb"), JStringW("equed"), JDoubleArray("s"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dpbtf2", JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JIntW("info")),
Routine ( "dpbtrf", JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JIntW("info")),
Routine ( "dpbtrs", JString("uplo"), JInt("n"), JInt("kd"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dpocon", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dpoequ", JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("s"), JDoubleW("scond"), JDoubleW("amax"), JIntW("info")),
Routine ( "dporfs", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("af"), JInt("ldaf"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dposv", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dposvx", JString("fact"), JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("af"), JInt("ldaf"), JStringW("equed"), JDoubleArray("s"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dpotf2", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("info")),
Routine ( "dpotrf", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("info")),
Routine ( "dpotri", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("info")),
Routine ( "dpotrs", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dppcon", JString("uplo"), JInt("n"), JDoubleArray("ap"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dppequ", JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("s"), JDoubleW("scond"), JDoubleW("amax"), JIntW("info")),
Routine ( "dpprfs", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JDoubleArray("afp"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dppsv", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dppsvx", JString("fact"), JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JDoubleArray("afp"), JStringW("equed"), JDoubleArray("s"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dpptrf", JString("uplo"), JInt("n"), JDoubleArray("ap"), JIntW("info")),
Routine ( "dpptri", JString("uplo"), JInt("n"), JDoubleArray("ap"), JIntW("info")),
Routine ( "dpptrs", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dptcon", JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntW("info")),
Routine ( "dpteqr", JString("compz"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntW("info")),
Routine ( "dptrfs", JInt("n"), JInt("nrhs"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("df"), JDoubleArray("ef"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntW("info")),
Routine ( "dptsv", JInt("n"), JInt("nrhs"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dptsvx", JString("fact"), JInt("n"), JInt("nrhs"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("df"), JDoubleArray("ef"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntW("info")),
Routine ( "dpttrf", JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JIntW("info")),
Routine ( "dpttrs", JInt("n"), JInt("nrhs"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dptts2", JInt("n"), JInt("nrhs"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("b"), JInt("ldb")),
Routine ( "drscl", JInt("n"), JDouble("sa"), JDoubleArray("sx"), JInt("incx")),
Routine ( "dsbev", JString("jobz"), JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntW("info")),
Routine ( "dsbevd", JString("jobz"), JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dsbevx", JString("jobz"), JString("range"), JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("q"), JInt("ldq"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntArray("iwork"), JIntArray("ifail"), JIntW("info")),
Routine ( "dsbgst", JString("vect"), JString("uplo"), JInt("n"), JInt("ka"), JInt("kb"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("bb"), JInt("ldbb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("work"), JIntW("info")),
Routine ( "dsbgv", JString("jobz"), JString("uplo"), JInt("n"), JInt("ka"), JInt("kb"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("bb"), JInt("ldbb"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntW("info")),
Routine ( "dsbgvd", JString("jobz"), JString("uplo"), JInt("n"), JInt("ka"), JInt("kb"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("bb"), JInt("ldbb"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dsbgvx", JString("jobz"), JString("range"), JString("uplo"), JInt("n"), JInt("ka"), JInt("kb"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("bb"), JInt("ldbb"), JDoubleArray("q"), JInt("ldq"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntArray("iwork"), JIntArray("ifail"), JIntW("info")),
Routine ( "dsbtrd", JString("vect"), JString("uplo"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("work"), JIntW("info")),
Routine ( "dsgesv", JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("work"), JFloatArray("swork"), JIntW("iter"), JIntW("info")),
Routine ( "dspcon", JString("uplo"), JInt("n"), JDoubleArray("ap"), JIntArray("ipiv"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dspev", JString("jobz"), JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntW("info")),
Routine ( "dspevd", JString("jobz"), JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dspevx", JString("jobz"), JString("range"), JString("uplo"), JInt("n"), JDoubleArray("ap"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntArray("iwork"), JIntArray("ifail"), JIntW("info")),
Routine ( "dspgst", JInt("itype"), JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("bp"), JIntW("info")),
Routine ( "dspgv", JInt("itype"), JString("jobz"), JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("bp"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntW("info")),
Routine ( "dspgvd", JInt("itype"), JString("jobz"), JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("bp"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dspgvx", JInt("itype"), JString("jobz"), JString("range"), JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("bp"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntArray("iwork"), JIntArray("ifail"), JIntW("info")),
Routine ( "dsprfs", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JDoubleArray("afp"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dspsv", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dspsvx", JString("fact"), JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JDoubleArray("afp"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dsptrd", JString("uplo"), JInt("n"), JDoubleArray("ap"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("tau"), JIntW("info")),
Routine ( "dsptrf", JString("uplo"), JInt("n"), JDoubleArray("ap"), JIntArray("ipiv"), JIntW("info")),
Routine ( "dsptri", JString("uplo"), JInt("n"), JDoubleArray("ap"), JIntArray("ipiv"), JDoubleArray("work"), JIntW("info")),
Routine ( "dsptrs", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dstebz", JString("range"), JString("order"), JInt("n"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JDoubleArray("d"), JDoubleArray("e"), JIntW("m"), JIntW("nsplit"), JDoubleArray("w"), JIntArray("iblock"), JIntArray("isplit"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dstedc", JString("compz"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dstegr", JString("jobz"), JString("range"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JIntArray("isuppz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dstein", JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JInt("m"), JDoubleArray("w"), JIntArray("iblock"), JIntArray("isplit"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntArray("iwork"), JIntArray("ifail"), JIntW("info")),
Routine ( "dstemr", JString("jobz"), JString("range"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JInt("nzc"), JIntArray("isuppz"), JBooleanW("tryrac"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dsteqr", JString("compz"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntW("info")),
Routine ( "dsterf", JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JIntW("info")),
Routine ( "dstev", JString("jobz"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntW("info")),
Routine ( "dstevd", JString("jobz"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dstevr", JString("jobz"), JString("range"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JIntArray("isuppz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dstevx", JString("jobz"), JString("range"), JInt("n"), JDoubleArray("d"), JDoubleArray("e"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JIntArray("iwork"), JIntArray("ifail"), JIntW("info")),
Routine ( "dsycon", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDouble("anorm"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dsyev", JString("jobz"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("w"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dsyevd", JString("jobz"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("w"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dsyevr", JString("jobz"), JString("range"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JIntArray("isuppz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dsyevx", JString("jobz"), JString("range"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JIntArray("ifail"), JIntW("info")),
Routine ( "dsygs2", JInt("itype"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dsygst", JInt("itype"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dsygv", JInt("itype"), JString("jobz"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("w"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dsygvd", JInt("itype"), JString("jobz"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("w"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dsygvx", JInt("itype"), JString("jobz"), JString("range"), JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDouble("vl"), JDouble("vu"), JInt("il"), JInt("iu"), JDouble("abstol"), JIntW("m"), JDoubleArray("w"), JDoubleArray("z"), JInt("ldz"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JIntArray("ifail"), JIntW("info")),
Routine ( "dsyrfs", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("af"), JInt("ldaf"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dsysv", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dsysvx", JString("fact"), JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("af"), JInt("ldaf"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleW("rcond"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "dsytd2", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("tau"), JIntW("info")),
Routine ( "dsytf2", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JIntW("info")),
Routine ( "dsytrd", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("d"), JDoubleArray("e"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dsytrf", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dsytri", JString("uplo"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("work"), JIntW("info")),
Routine ( "dsytrs", JString("uplo"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JIntArray("ipiv"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dtbcon", JString("norm"), JString("uplo"), JString("diag"), JInt("n"), JInt("kd"), JDoubleArray("ab"), JInt("ldab"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtbrfs", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("kd"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtbtrs", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("kd"), JInt("nrhs"), JDoubleArray("ab"), JInt("ldab"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dtgevc", JString("side"), JString("howmny"), JBooleanArray("select"), JInt("n"), JDoubleArray("s"), JInt("lds"), JDoubleArray("p"), JInt("ldp"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JInt("mm"), JIntW("m"), JDoubleArray("work"), JIntW("info")),
Routine ( "dtgex2", JBoolean("wantq"), JBoolean("wantz"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("z"), JInt("ldz"), JInt("j1"), JInt("n1"), JInt("n2"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dtgexc", JBoolean("wantq"), JBoolean("wantz"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("z"), JInt("ldz"), JIntW("ifst"), JIntW("ilst"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "dtgsen", JInt("ijob"), JBoolean("wantq"), JBoolean("wantz"), JBooleanArray("select"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("alphar"), JDoubleArray("alphai"), JDoubleArray("beta"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("z"), JInt("ldz"), JIntW("m"), JDoubleW("pl"), JDoubleW("pr"), JDoubleArray("dif"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dtgsja", JString("jobu"), JString("jobv"), JString("jobq"), JInt("m"), JInt("p"), JInt("n"), JInt("k"), JInt("l"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDouble("tola"), JDouble("tolb"), JDoubleArray("alpha"), JDoubleArray("beta"), JDoubleArray("u"), JInt("ldu"), JDoubleArray("v"), JInt("ldv"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("work"), JIntW("ncycle"), JIntW("info")),
Routine ( "dtgsna", JString("job"), JString("howmny"), JBooleanArray("select"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JDoubleArray("s"), JDoubleArray("dif"), JInt("mm"), JIntW("m"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtgsy2", JString("trans"), JInt("ijob"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("d"), JInt("ldd"), JDoubleArray("e"), JInt("lde"), JDoubleArray("f"), JInt("ldf"), JDoubleW("scale"), JDoubleW("rdsum"), JDoubleW("rdscal"), JIntArray("iwork"), JIntW("pq"), JIntW("info")),
Routine ( "dtgsyl", JString("trans"), JInt("ijob"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("c"), JInt("Ldc"), JDoubleArray("d"), JInt("ldd"), JDoubleArray("e"), JInt("lde"), JDoubleArray("f"), JInt("ldf"), JDoubleW("scale"), JDoubleW("dif"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtpcon", JString("norm"), JString("uplo"), JString("diag"), JInt("n"), JDoubleArray("ap"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtprfs", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtptri", JString("uplo"), JString("diag"), JInt("n"), JDoubleArray("ap"), JIntW("info")),
Routine ( "dtptrs", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("nrhs"), JDoubleArray("ap"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dtrcon", JString("norm"), JString("uplo"), JString("diag"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleW("rcond"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtrevc", JString("side"), JString("howmny"), JBooleanArray("select"), JInt("n"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JInt("mm"), JIntW("m"), JDoubleArray("work"), JIntW("info")),
Routine ( "dtrexc", JString("compq"), JInt("n"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("q"), JInt("ldq"), JIntW("ifst"), JIntW("ilst"), JDoubleArray("work"), JIntW("info")),
Routine ( "dtrrfs", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("x"), JInt("ldx"), JDoubleArray("ferr"), JDoubleArray("berr"), JDoubleArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtrsen", JString("job"), JString("compq"), JBooleanArray("select"), JInt("n"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("q"), JInt("ldq"), JDoubleArray("wr"), JDoubleArray("wi"), JIntW("m"), JDoubleW("s"), JDoubleW("sep"), JDoubleArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JIntW("info")),
Routine ( "dtrsna", JString("job"), JString("howmny"), JBooleanArray("select"), JInt("n"), JDoubleArray("t"), JInt("ldt"), JDoubleArray("vl"), JInt("ldvl"), JDoubleArray("vr"), JInt("ldvr"), JDoubleArray("s"), JDoubleArray("sep"), JInt("mm"), JIntW("m"), JDoubleArray("work"), JInt("ldwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "dtrsyl", JString("trana"), JString("tranb"), JInt("isgn"), JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JDoubleArray("c"), JInt("Ldc"), JDoubleW("scale"), JIntW("info")),
Routine ( "dtrti2", JString("uplo"), JString("diag"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("info")),
Routine ( "dtrtri", JString("uplo"), JString("diag"), JInt("n"), JDoubleArray("a"), JInt("lda"), JIntW("info")),
Routine ( "dtrtrs", JString("uplo"), JString("trans"), JString("diag"), JInt("n"), JInt("nrhs"), JDoubleArray("a"), JInt("lda"), JDoubleArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "dtzrqf", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JIntW("info")),
Routine ( "dtzrzf", JInt("m"), JInt("n"), JDoubleArray("a"), JInt("lda"), JDoubleArray("tau"), JDoubleArray("work"), JInt("lwork"), JIntW("info")),
RoutineR (JIntR(), "ieeeck", JInt("ispec"), JFloat("zero"), JFloat("one")),
RoutineR (JIntR(), "ilaenv", JInt("ispec"), JString("name"), JString("opts"), JInt("n1"), JInt("n2"), JInt("n3"), JInt("n4")),
Routine ( "ilaver", JIntW("vers_major"), JIntW("vers_minor"), JIntW("vers_patch")),
RoutineR (JIntR(), "iparmq", JInt("ispec"), JString("name"), JString("opts"), JInt("n"), JInt("ilo"), JInt("ihi"), JInt("lwork")),
RoutineR (JBooleanR(), "lsamen", JInt("n"), JString("ca"), JString("cb")),
Routine ( "sbdsdc", JString("uplo"), JString("compq"), JInt("n"), JFloatArray("d"), JFloatArray("e"), JFloatArray("u"), JInt("ldu"), JFloatArray("vt"), JInt("ldvt"), JFloatArray("q"), JIntArray("iq"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sbdsqr", JString("uplo"), JInt("n"), JInt("ncvt"), JInt("nru"), JInt("ncc"), JFloatArray("d"), JFloatArray("e"), JFloatArray("vt"), JInt("ldvt"), JFloatArray("u"), JInt("ldu"), JFloatArray("c"), JInt("Ldc"), JFloatArray("work"), JIntW("info")),
Routine ( "sdisna", JString("job"), JInt("m"), JInt("n"), JFloatArray("d"), JFloatArray("sep"), JIntW("info")),
Routine ( "sgbbrd", JString("vect"), JInt("m"), JInt("n"), JInt("ncc"), JInt("kl"), JInt("ku"), JFloatArray("ab"), JInt("ldab"), JFloatArray("d"), JFloatArray("e"), JFloatArray("q"), JInt("ldq"), JFloatArray("pt"), JInt("ldpt"), JFloatArray("c"), JInt("Ldc"), JFloatArray("work"), JIntW("info")),
Routine ( "sgbcon", JString("norm"), JInt("n"), JInt("kl"), JInt("ku"), JFloatArray("ab"), JInt("ldab"), JIntArray("ipiv"), JFloat("anorm"), JFloatW("rcond"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgbequ", JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JFloatArray("ab"), JInt("ldab"), JFloatArray("r"), JFloatArray("c"), JFloatW("rowcnd"), JFloatW("colcnd"), JFloatW("amax"), JIntW("info")),
Routine ( "sgbrfs", JString("trans"), JInt("n"), JInt("kl"), JInt("ku"), JInt("nrhs"), JFloatArray("ab"), JInt("ldab"), JFloatArray("afb"), JInt("ldafb"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JFloatArray("x"), JInt("ldx"), JFloatArray("ferr"), JFloatArray("berr"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgbsv", JInt("n"), JInt("kl"), JInt("ku"), JInt("nrhs"), JFloatArray("ab"), JInt("ldab"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "sgbsvx", JString("fact"), JString("trans"), JInt("n"), JInt("kl"), JInt("ku"), JInt("nrhs"), JFloatArray("ab"), JInt("ldab"), JFloatArray("afb"), JInt("ldafb"), JIntArray("ipiv"), JStringW("equed"), JFloatArray("r"), JFloatArray("c"), JFloatArray("b"), JInt("ldb"), JFloatArray("x"), JInt("ldx"), JFloatW("rcond"), JFloatArray("ferr"), JFloatArray("berr"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgbtf2", JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JFloatArray("ab"), JInt("ldab"), JIntArray("ipiv"), JIntW("info")),
Routine ( "sgbtrf", JInt("m"), JInt("n"), JInt("kl"), JInt("ku"), JFloatArray("ab"), JInt("ldab"), JIntArray("ipiv"), JIntW("info")),
Routine ( "sgbtrs", JString("trans"), JInt("n"), JInt("kl"), JInt("ku"), JInt("nrhs"), JFloatArray("ab"), JInt("ldab"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "sgebak", JString("job"), JString("side"), JInt("n"), JInt("ilo"), JInt("ihi"), JFloatArray("scale"), JInt("m"), JFloatArray("v"), JInt("ldv"), JIntW("info")),
Routine ( "sgebal", JString("job"), JInt("n"), JFloatArray("a"), JInt("lda"), JIntW("ilo"), JIntW("ihi"), JFloatArray("scale"), JIntW("info")),
Routine ( "sgebd2", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("d"), JFloatArray("e"), JFloatArray("tauq"), JFloatArray("taup"), JFloatArray("work"), JIntW("info")),
Routine ( "sgebrd", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("d"), JFloatArray("e"), JFloatArray("tauq"), JFloatArray("taup"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgecon", JString("norm"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloat("anorm"), JFloatW("rcond"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgeequ", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("r"), JFloatArray("c"), JFloatW("rowcnd"), JFloatW("colcnd"), JFloatW("amax"), JIntW("info")),
Routine_NI( "sgees", JString("jobvs"), JString("sort"), JObject("select"), JInt("n"), JFloatArray("a"), JInt("lda"), JIntW("sdim"), JFloatArray("wr"), JFloatArray("wi"), JFloatArray("vs"), JInt("ldvs"), JFloatArray("work"), JInt("lwork"), JBooleanArray("bwork"), JIntW("info")),
Routine_NI( "sgeesx", JString("jobvs"), JString("sort"), JObject("select"), JString("sense"), JInt("n"), JFloatArray("a"), JInt("lda"), JIntW("sdim"), JFloatArray("wr"), JFloatArray("wi"), JFloatArray("vs"), JInt("ldvs"), JFloatW("rconde"), JFloatW("rcondv"), JFloatArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JBooleanArray("bwork"), JIntW("info")),
Routine ( "sgeev", JString("jobvl"), JString("jobvr"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("wr"), JFloatArray("wi"), JFloatArray("vl"), JInt("ldvl"), JFloatArray("vr"), JInt("ldvr"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgeevx", JString("balanc"), JString("jobvl"), JString("jobvr"), JString("sense"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("wr"), JFloatArray("wi"), JFloatArray("vl"), JInt("ldvl"), JFloatArray("vr"), JInt("ldvr"), JIntW("ilo"), JIntW("ihi"), JFloatArray("scale"), JFloatW("abnrm"), JFloatArray("rconde"), JFloatArray("rcondv"), JFloatArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgegs", JString("jobvsl"), JString("jobvsr"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("alphar"), JFloatArray("alphai"), JFloatArray("beta"), JFloatArray("vsl"), JInt("ldvsl"), JFloatArray("vsr"), JInt("ldvsr"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgegv", JString("jobvl"), JString("jobvr"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("alphar"), JFloatArray("alphai"), JFloatArray("beta"), JFloatArray("vl"), JInt("ldvl"), JFloatArray("vr"), JInt("ldvr"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgehd2", JInt("n"), JInt("ilo"), JInt("ihi"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JIntW("info")),
Routine ( "sgehrd", JInt("n"), JInt("ilo"), JInt("ihi"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgelq2", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JIntW("info")),
Routine ( "sgelqf", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgels", JString("trans"), JInt("m"), JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgelsd", JInt("m"), JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("s"), JFloat("rcond"), JIntW("rank"), JFloatArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgelss", JInt("m"), JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("s"), JFloat("rcond"), JIntW("rank"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgelsx", JInt("m"), JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JIntArray("jpvt"), JFloat("rcond"), JIntW("rank"), JFloatArray("work"), JIntW("info")),
Routine ( "sgelsy", JInt("m"), JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JIntArray("jpvt"), JFloat("rcond"), JIntW("rank"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgeql2", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JIntW("info")),
Routine ( "sgeqlf", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgeqp3", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JIntArray("jpvt"), JFloatArray("tau"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgeqpf", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JIntArray("jpvt"), JFloatArray("tau"), JFloatArray("work"), JIntW("info")),
Routine ( "sgeqr2", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JIntW("info")),
Routine ( "sgeqrf", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgerfs", JString("trans"), JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JFloatArray("af"), JInt("ldaf"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JFloatArray("x"), JInt("ldx"), JFloatArray("ferr"), JFloatArray("berr"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgerq2", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JIntW("info")),
Routine ( "sgerqf", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("tau"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgesc2", JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("rhs"), JIntArray("ipiv"), JIntArray("jpiv"), JFloatW("scale")),
Routine ( "sgesdd", JString("jobz"), JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("s"), JFloatArray("u"), JInt("ldu"), JFloatArray("vt"), JInt("ldvt"), JFloatArray("work"), JInt("lwork"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgesv", JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "sgesvd", JString("jobu"), JString("jobvt"), JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("s"), JFloatArray("u"), JInt("ldu"), JFloatArray("vt"), JInt("ldvt"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgesvx", JString("fact"), JString("trans"), JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JFloatArray("af"), JInt("ldaf"), JIntArray("ipiv"), JStringW("equed"), JFloatArray("r"), JFloatArray("c"), JFloatArray("b"), JInt("ldb"), JFloatArray("x"), JInt("ldx"), JFloatW("rcond"), JFloatArray("ferr"), JFloatArray("berr"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgetc2", JInt("n"), JFloatArray("a"), JInt("lda"), JIntArray("ipiv"), JIntArray("jpiv"), JIntW("info")),
Routine ( "sgetf2", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JIntArray("ipiv"), JIntW("info")),
Routine ( "sgetrf", JInt("m"), JInt("n"), JFloatArray("a"), JInt("lda"), JIntArray("ipiv"), JIntW("info")),
Routine ( "sgetri", JInt("n"), JFloatArray("a"), JInt("lda"), JIntArray("ipiv"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgetrs", JString("trans"), JInt("n"), JInt("nrhs"), JFloatArray("a"), JInt("lda"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "sggbak", JString("job"), JString("side"), JInt("n"), JInt("ilo"), JInt("ihi"), JFloatArray("lscale"), JFloatArray("rscale"), JInt("m"), JFloatArray("v"), JInt("ldv"), JIntW("info")),
Routine ( "sggbal", JString("job"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JIntW("ilo"), JIntW("ihi"), JFloatArray("lscale"), JFloatArray("rscale"), JFloatArray("work"), JIntW("info")),
Routine_NI( "sgges", JString("jobvsl"), JString("jobvsr"), JString("sort"), JObject("selctg"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JIntW("sdim"), JFloatArray("alphar"), JFloatArray("alphai"), JFloatArray("beta"), JFloatArray("vsl"), JInt("ldvsl"), JFloatArray("vsr"), JInt("ldvsr"), JFloatArray("work"), JInt("lwork"), JBooleanArray("bwork"), JIntW("info")),
Routine_NI( "sggesx", JString("jobvsl"), JString("jobvsr"), JString("sort"), JObject("selctg"), JString("sense"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JIntW("sdim"), JFloatArray("alphar"), JFloatArray("alphai"), JFloatArray("beta"), JFloatArray("vsl"), JInt("ldvsl"), JFloatArray("vsr"), JInt("ldvsr"), JFloatArray("rconde"), JFloatArray("rcondv"), JFloatArray("work"), JInt("lwork"), JIntArray("iwork"), JInt("liwork"), JBooleanArray("bwork"), JIntW("info")),
Routine ( "sggev", JString("jobvl"), JString("jobvr"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("alphar"), JFloatArray("alphai"), JFloatArray("beta"), JFloatArray("vl"), JInt("ldvl"), JFloatArray("vr"), JInt("ldvr"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sggevx", JString("balanc"), JString("jobvl"), JString("jobvr"), JString("sense"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("alphar"), JFloatArray("alphai"), JFloatArray("beta"), JFloatArray("vl"), JInt("ldvl"), JFloatArray("vr"), JInt("ldvr"), JIntW("ilo"), JIntW("ihi"), JFloatArray("lscale"), JFloatArray("rscale"), JFloatW("abnrm"), JFloatW("bbnrm"), JFloatArray("rconde"), JFloatArray("rcondv"), JFloatArray("work"), JInt("lwork"), JIntArray("iwork"), JBooleanArray("bwork"), JIntW("info")),
Routine ( "sggglm", JInt("n"), JInt("m"), JInt("p"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("d"), JFloatArray("x"), JFloatArray("y"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sgghrd", JString("compq"), JString("compz"), JInt("n"), JInt("ilo"), JInt("ihi"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("q"), JInt("ldq"), JFloatArray("z"), JInt("ldz"), JIntW("info")),
Routine ( "sgglse", JInt("m"), JInt("n"), JInt("p"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("c"), JFloatArray("d"), JFloatArray("x"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sggqrf", JInt("n"), JInt("m"), JInt("p"), JFloatArray("a"), JInt("lda"), JFloatArray("taua"), JFloatArray("b"), JInt("ldb"), JFloatArray("taub"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sggrqf", JInt("m"), JInt("p"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("taua"), JFloatArray("b"), JInt("ldb"), JFloatArray("taub"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "sggsvd", JString("jobu"), JString("jobv"), JString("jobq"), JInt("m"), JInt("n"), JInt("p"), JIntW("k"), JIntW("l"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloatArray("alpha"), JFloatArray("beta"), JFloatArray("u"), JInt("ldu"), JFloatArray("v"), JInt("ldv"), JFloatArray("q"), JInt("ldq"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sggsvp", JString("jobu"), JString("jobv"), JString("jobq"), JInt("m"), JInt("p"), JInt("n"), JFloatArray("a"), JInt("lda"), JFloatArray("b"), JInt("ldb"), JFloat("tola"), JFloat("tolb"), JIntW("k"), JIntW("l"), JFloatArray("u"), JInt("ldu"), JFloatArray("v"), JInt("ldv"), JFloatArray("q"), JInt("ldq"), JIntArray("iwork"), JFloatArray("tau"), JFloatArray("work"), JIntW("info")),
Routine ( "sgtcon", JString("norm"), JInt("n"), JFloatArray("dl"), JFloatArray("d"), JFloatArray("du"), JFloatArray("du2"), JIntArray("ipiv"), JFloat("anorm"), JFloatW("rcond"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgtrfs", JString("trans"), JInt("n"), JInt("nrhs"), JFloatArray("dl"), JFloatArray("d"), JFloatArray("du"), JFloatArray("dlf"), JFloatArray("df"), JFloatArray("duf"), JFloatArray("du2"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JFloatArray("x"), JInt("ldx"), JFloatArray("ferr"), JFloatArray("berr"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgtsv", JInt("n"), JInt("nrhs"), JFloatArray("dl"), JFloatArray("d"), JFloatArray("du"), JFloatArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "sgtsvx", JString("fact"), JString("trans"), JInt("n"), JInt("nrhs"), JFloatArray("dl"), JFloatArray("d"), JFloatArray("du"), JFloatArray("dlf"), JFloatArray("df"), JFloatArray("duf"), JFloatArray("du2"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JFloatArray("x"), JInt("ldx"), JFloatW("rcond"), JFloatArray("ferr"), JFloatArray("berr"), JFloatArray("work"), JIntArray("iwork"), JIntW("info")),
Routine ( "sgttrf", JInt("n"), JFloatArray("dl"), JFloatArray("d"), JFloatArray("du"), JFloatArray("du2"), JIntArray("ipiv"), JIntW("info")),
Routine ( "sgttrs", JString("trans"), JInt("n"), JInt("nrhs"), JFloatArray("dl"), JFloatArray("d"), JFloatArray("du"), JFloatArray("du2"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb"), JIntW("info")),
Routine ( "sgtts2", JInt("itrans"), JInt("n"), JInt("nrhs"), JFloatArray("dl"), JFloatArray("d"), JFloatArray("du"), JFloatArray("du2"), JIntArray("ipiv"), JFloatArray("b"), JInt("ldb")),
Routine ( "shgeqz", JString("job"), JString("compq"), JString("compz"), JInt("n"), JInt("ilo"), JInt("ihi"), JFloatArray("h"), JInt("ldh"), JFloatArray("t"), JInt("ldt"), JFloatArray("alphar"), JFloatArray("alphai"), JFloatArray("beta"), JFloatArray("q"), JInt("ldq"), JFloatArray("z"), JInt("ldz"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
Routine ( "shsein", JString("side"), JString("eigsrc"), JString("initv"), JBooleanArray("select"), JInt("n"), JFloatArray("h"), JInt("ldh"), JFloatArray("wr"), JFloatArray("wi"), JFloatArray("vl"), JInt("ldvl"), JFloatArray("vr"), JInt("ldvr"), JInt("mm"), JIntW("m"), JFloatArray("work"), JIntArray("ifaill"), JIntArray("ifailr"), JIntW("info")),
Routine ( "shseqr", JString("job"), JString("compz"), JInt("n"), JInt("ilo"), JInt("ihi"), JFloatArray("h"), JInt("ldh"), JFloatArray("wr"), JFloatArray("wi"), JFloatArray("z"), JInt("ldz"), JFloatArray("work"), JInt("lwork"), JIntW("info")),
RoutineR (JBooleanR(), "sisnan", JFloat("sin")),
Routine ( "slabad", JFloatW("small"), JFloatW("large")),
Routine ( "slabrd", JInt("m"), JInt("n"), JInt("nb"), JFloatArray("a"), JInt("lda"), JFloatArray("d"), JFloatArray("e"), JFloatArray("tauq"), JFloatArray("taup"), JFloatArray("x"), JInt("ldx"), JFloatArray("y"), JInt("ldy")),
Routine ( "slacn2", JInt("n"), JFloatArray("v"), JFloatArray("x"), JIntArray("isgn"), JFloatW("est"), JIntW("kase"), JIntArray("isave")),
Routine ( "slacon", JInt("n"), JFloatArray("v"), JFloatArray("x"), JIntArray("isgn"), JFloatW("est"), JIntW("kase")),