optics-rs 0.13.1

Rust port of EPICS synApps optics module
Documentation
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
//! Chantler X-ray absorption data for filter materials.
//
//! Ported from `opticsApp/src/chantler.c` (22 elements, up to 274 energy points each).
//! Data: mass attenuation coefficients mu/rho [cm^2/g] vs photon energy [keV].
// These are tabulated physical data, not approximations of mathematical constants.
#![allow(clippy::approx_constant)]

/// A filter material with tabulated mass-attenuation coefficients.
#[derive(Debug, Clone)]
pub struct FilterMaterial {
    /// Atomic number.
    pub z: u32,
    /// Element symbol (e.g. "Cu").
    pub name: &'static str,
    /// Bulk density in g/cm^3.
    pub density: f32,
    /// Photon energies in keV (sorted ascending).
    pub kev: &'static [f32],
    /// Mass-attenuation coefficients mu/rho in cm^2/g.
    pub mu: &'static [f32],
}

const KEV_BE: [f32; 169] = [
    0.0082516, 0.0083779, 0.0084116, 0.0084621, 0.0085884, 0.01069, 0.011428, 0.012216, 0.013059,
    0.01396, 0.014923, 0.015953, 0.017054, 0.018231, 0.019488, 0.020833, 0.022271, 0.023807,
    0.02545, 0.027206, 0.029083, 0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402,
    0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477, 0.069239, 0.074017, 0.079124,
    0.084584, 0.09042, 0.096659, 0.10333, 0.10878, 0.11046, 0.11089, 0.11156, 0.11322, 0.11808,
    0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246,
    0.26297, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941,
    0.51249, 0.54785, 0.58565, 0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.87399, 0.93429,
    0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.8208, 1.9464,
    2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348,
    4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539,
    10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5,
    22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882,
    51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64,
    113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48,
    253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_BE: [f32; 169] = [
    3.7164e-05, 3.9696e-05, 4.0392e-05, 53699.0, 55921.0, 92803.0, 1.009e+05, 1.0653e+05,
    1.0962e+05, 1.1034e+05, 1.0895e+05, 1.0581e+05, 1.0132e+05, 95856.0, 89757.0, 83316.0, 76767.0,
    70294.0, 64030.0, 58066.0, 52462.0, 47249.0, 42439.0, 38024.0, 33983.0, 30305.0, 26970.0,
    23959.0, 21247.0, 18811.0, 16628.0, 14676.0, 12933.0, 11381.0, 9999.1, 8772.3, 7684.8, 6722.1,
    5871.6, 5121.5, 4605.2, 4461.1, 4425.1, 1.7049e+05, 1.6525e+05, 1.5125e+05, 1.3135e+05,
    1.1367e+05, 98012.0, 84219.0, 72122.0, 61572.0, 52422.0, 44519.0, 37718.0, 31887.0, 26902.0,
    22654.0, 19042.0, 15980.0, 13389.0, 11202.0, 9358.9, 7808.6, 6506.9, 5415.6, 4501.2, 3736.4,
    3097.6, 2565.2, 2122.1, 1754.0, 1448.6, 1195.4, 985.89, 812.63, 669.49, 551.34, 450.84, 368.63,
    301.43, 246.48, 201.58, 164.86, 134.85, 110.32, 90.256, 73.857, 60.449, 49.165, 39.991, 32.541,
    26.489, 21.574, 17.518, 14.188, 11.502, 9.3328, 7.5809, 6.1665, 5.0244, 4.1019, 3.3565, 2.754,
    2.2668, 1.8727, 1.5537, 1.2952, 1.0858, 0.91596, 0.7774, 0.66303, 0.57052, 0.49562, 0.43489,
    0.38559, 0.34549, 0.3128, 0.28611, 0.26425, 0.24631, 0.23151, 0.21927, 0.2091, 0.20059,
    0.19342, 0.18736, 0.18214, 0.17762, 0.17369, 0.1702, 0.16708, 0.16424, 0.16163, 0.15918,
    0.15686, 0.15464, 0.15248, 0.15036, 0.14828, 0.14619, 0.14413, 0.14204, 0.13994, 0.13782,
    0.13567, 0.1335, 0.13131, 0.12908, 0.12683, 0.12456, 0.12226, 0.11994, 0.1176, 0.11525,
    0.11288, 0.1105, 0.10812, 0.10572, 0.10333, 0.10094, 0.09855, 0.096169, 0.093799, 0.091442,
    0.089101, 0.086778, 0.084476, 0.082196,
];

const KEV_B: [f32; 175] = [
    0.004606, 0.0046765, 0.0046953, 0.0047235, 0.004794, 0.01069, 0.011428, 0.012216, 0.013059,
    0.013201, 0.013403, 0.013457, 0.013537, 0.013739, 0.01396, 0.014923, 0.015953, 0.017054,
    0.018231, 0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109,
    0.033235, 0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05302, 0.056679,
    0.06059, 0.06477, 0.069239, 0.074017, 0.079124, 0.084584, 0.09042, 0.096659, 0.10333, 0.11046,
    0.11808, 0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18424, 0.18706, 0.18781,
    0.18837, 0.18894, 0.19176, 0.20137, 0.21527, 0.23012, 0.246, 0.26297, 0.28112, 0.30051,
    0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941, 0.51249, 0.54785, 0.58565,
    0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201,
    1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172,
    2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515,
    6.469, 6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.793, 12.607, 13.477,
    14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014,
    32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.843,
    71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27, 139.26, 148.86,
    159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11, 310.13, 331.53,
    354.4, 378.86, 405.0, 432.95,
];

const MU_B: [f32; 175] = [
    6.1552e-05, 6.5531e-05, 6.6621e-05, 9.6591e+05, 9.3769e+05, 2.3272e+05, 2.065e+05, 1.8267e+05,
    1.6108e+05, 1.5779e+05, 1.5325e+05, 1.5207e+05, 1.8934e+05, 1.8648e+05, 1.8358e+05, 1.7329e+05,
    1.6497e+05, 1.5746e+05, 1.5037e+05, 1.4335e+05, 1.362e+05, 1.2882e+05, 1.2121e+05, 1.1342e+05,
    1.0553e+05, 97639.0, 89854.0, 82270.0, 74970.0, 68019.0, 61464.0, 55338.0, 49655.0, 44421.0,
    39627.0, 35255.0, 31276.0, 27673.0, 24428.0, 21515.0, 18912.0, 16592.0, 14520.0, 12670.0,
    11040.0, 9606.3, 8347.8, 7245.1, 6280.7, 5438.7, 4704.5, 4065.3, 3509.7, 3180.1, 3074.8,
    3047.5, 81883.0, 81378.0, 78936.0, 71382.0, 62156.0, 53820.0, 46355.0, 39732.0, 33915.0,
    28849.0, 24465.0, 20693.0, 17461.0, 14703.0, 12357.0, 10367.0, 8684.0, 7263.6, 6067.1, 5061.2,
    4216.8, 3509.1, 2916.9, 2421.9, 2008.4, 1663.8, 1377.1, 1139.2, 934.16, 765.97, 628.08, 515.02,
    422.35, 346.36, 284.07, 232.99, 191.11, 156.78, 128.63, 105.54, 86.615, 71.093, 58.365, 47.927,
    39.204, 31.956, 26.047, 21.139, 17.166, 13.95, 11.346, 9.2367, 7.5288, 6.1454, 5.0242, 4.1149,
    3.3776, 2.78, 2.2951, 1.9017, 1.5804, 1.3143, 1.0996, 0.926, 0.78566, 0.67208, 0.58006,
    0.50542, 0.44478, 0.39543, 0.35521, 0.32233, 0.29539, 0.27324, 0.25497, 0.23981, 0.22718,
    0.2165, 0.20748, 0.1998, 0.19321, 0.18748, 0.18244, 0.17796, 0.1739, 0.1702, 0.16677, 0.16355,
    0.1605, 0.15757, 0.15474, 0.15198, 0.14928, 0.14661, 0.14398, 0.14136, 0.13875, 0.13615,
    0.13356, 0.13097, 0.12838, 0.1258, 0.12322, 0.12064, 0.11808, 0.11553, 0.11299, 0.11046,
    0.10796, 0.10547, 0.103, 0.10057, 0.098152, 0.095768, 0.093416, 0.091097, 0.088814, 0.086568,
    0.08436,
];

const KEV_C: [f32; 175] = [
    0.006272, 0.006368, 0.0063936, 0.006432, 0.006528, 0.01069, 0.011428, 0.012216, 0.013059,
    0.01396, 0.014923, 0.015953, 0.017054, 0.018231, 0.01912, 0.019412, 0.019488, 0.01949,
    0.019608, 0.0199, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477,
    0.069239, 0.074017, 0.079124, 0.084584, 0.09042, 0.096659, 0.10333, 0.11046, 0.11808, 0.12623,
    0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246, 0.26297,
    0.27812, 0.28112, 0.28238, 0.28352, 0.28522, 0.28948, 0.30051, 0.32125, 0.34341, 0.36711,
    0.39244, 0.41952, 0.44847, 0.47941, 0.51249, 0.54785, 0.58565, 0.62606, 0.66926, 0.71544,
    0.76481, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905,
    1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194,
    3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925,
    7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464,
    17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666,
    39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386, 81.656,
    87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85,
    194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0,
    432.95,
];

const MU_C: [f32; 175] = [
    0.00066098, 0.00069744, 0.00070737, 1.0729e+06, 1.0518e+06, 5.6999e+05, 5.253e+05, 4.8316e+05,
    4.433e+05, 4.0558e+05, 3.6992e+05, 3.3626e+05, 3.0459e+05, 2.7489e+05, 2.5491e+05, 2.4874e+05,
    2.4718e+05, 2.4713e+05, 2.7234e+05, 2.6745e+05, 2.5312e+05, 2.3437e+05, 2.1723e+05, 2.0134e+05,
    1.8643e+05, 1.7227e+05, 1.5879e+05, 1.4594e+05, 1.3369e+05, 1.2204e+05, 1.11e+05, 1.0059e+05,
    90829.0, 81721.0, 73276.0, 65488.0, 58347.0, 51834.0, 45922.0, 40582.0, 35777.0, 31461.0,
    27596.0, 24151.0, 21091.0, 18383.0, 15996.0, 13847.0, 11956.0, 10310.0, 8880.5, 7641.5, 6569.1,
    5642.4, 4842.5, 4153.1, 3559.6, 3049.0, 2610.4, 2290.4, 2233.9, 2210.5, 2189.9, 48382.0,
    46932.0, 43462.0, 37872.0, 32793.0, 28213.0, 24135.0, 20555.0, 17442.0, 14756.0, 12451.0,
    10483.0, 8809.3, 7390.2, 6190.1, 5177.7, 4325.1, 3608.4, 3006.9, 2502.7, 2080.6, 1726.6,
    1430.7, 1177.1, 968.5, 796.88, 655.69, 539.55, 444.0, 365.39, 300.72, 247.52, 203.74, 167.73,
    138.09, 113.71, 93.646, 76.739, 62.598, 51.075, 41.686, 34.035, 27.799, 22.717, 18.574, 15.197,
    12.384, 10.096, 8.2403, 6.7348, 5.513, 4.5212, 3.7161, 3.0584, 2.5142, 2.0746, 1.7194, 1.432,
    1.1995, 1.0112, 0.85861, 0.73485, 0.63435, 0.55263, 0.4861, 0.43181, 0.38745, 0.35109, 0.3212,
    0.29654, 0.2759, 0.25871, 0.24435, 0.23229, 0.22206, 0.2133, 0.20573, 0.1991, 0.19325, 0.18799,
    0.18322, 0.17883, 0.17474, 0.17091, 0.16726, 0.16376, 0.16039, 0.15711, 0.1539, 0.15076,
    0.14766, 0.1446, 0.14158, 0.13859, 0.13562, 0.13268, 0.12978, 0.1269, 0.12404, 0.12122,
    0.11843, 0.11567, 0.11296, 0.11027, 0.10763, 0.10503, 0.10247, 0.099959, 0.097495, 0.095081,
    0.092716, 0.090403,
];

const KEV_AL: [f32; 180] = [
    0.0082082, 0.0083338, 0.0083673, 0.0084175, 0.0085432, 0.01069, 0.011428, 0.012216, 0.013059,
    0.01396, 0.014923, 0.015953, 0.017054, 0.018231, 0.019488, 0.020833, 0.022271, 0.023807,
    0.02545, 0.027206, 0.029083, 0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402,
    0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477, 0.069239, 0.071638, 0.072734,
    0.073027, 0.073466, 0.074017, 0.074562, 0.079124, 0.084584, 0.09042, 0.096659, 0.10333,
    0.11046, 0.11535, 0.11711, 0.11758, 0.11808, 0.11829, 0.12005, 0.12623, 0.13494, 0.14425,
    0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246, 0.26297, 0.28112, 0.30051,
    0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941, 0.51249, 0.54785, 0.58565,
    0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201,
    1.3043, 1.3943, 1.4905, 1.5284, 1.5518, 1.558, 1.5674, 1.5908, 1.5933, 1.7033, 1.8208, 1.9464,
    2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348,
    4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539,
    10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5,
    22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882,
    51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64,
    113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48,
    253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_AL: [f32; 180] = [
    3.6085e-05, 3.8846e-05, 3.9608e-05, 19119.0, 16513.0, 2677.3, 2054.0, 1744.8, 1609.9, 1586.4,
    1645.1, 1772.8, 1963.6, 2215.0, 2524.7, 2888.8, 3300.5, 3748.8, 4218.6, 4691.0, 5144.2, 5555.8,
    5904.6, 6162.5, 6305.1, 6334.2, 6259.1, 6095.1, 5853.5, 5538.7, 5180.1, 4795.6, 4400.6, 4008.2,
    3812.3, 3726.2, 3703.7, 83378.0, 84589.0, 85797.0, 96319.0, 1.084e+05, 1.1693e+05, 1.2137e+05,
    1.2185e+05, 1.1889e+05, 1.1546e+05, 1.1402e+05, 1.1362e+05, 1.2443e+05, 1.2425e+05, 1.2265e+05,
    1.1665e+05, 1.0764e+05, 97963.0, 88119.0, 78493.0, 69358.0, 60884.0, 53155.0, 46199.0, 40005.0,
    34535.0, 29735.0, 25546.0, 21904.0, 18742.0, 16007.0, 13648.0, 11620.0, 9879.7, 8389.8, 7116.7,
    6029.8, 5103.3, 4314.8, 3645.2, 3077.1, 2596.2, 2189.4, 1845.9, 1555.9, 1311.5, 1105.8, 920.86,
    767.42, 640.19, 534.58, 446.24, 371.36, 346.67, 332.58, 328.96, 4038.0, 3957.0, 3948.4, 3485.8,
    2943.0, 2447.6, 2035.5, 1706.0, 1432.1, 1203.6, 1011.4, 849.33, 710.68, 589.18, 488.26, 404.68,
    335.43, 278.07, 230.55, 191.18, 158.55, 131.51, 109.1, 90.526, 74.937, 61.744, 50.887, 41.953,
    34.536, 28.257, 23.131, 18.945, 15.527, 12.734, 10.454, 8.5895, 7.0658, 5.8199, 4.801, 3.9673,
    3.2851, 2.7264, 2.2689, 1.8939, 1.5865, 1.3296, 1.1184, 0.94583, 0.80374, 0.68672, 0.59119,
    0.51309, 0.44915, 0.39671, 0.35359, 0.31803, 0.28863, 0.26423, 0.24389, 0.22686, 0.21251,
    0.20034, 0.18995, 0.181, 0.17321, 0.16636, 0.16028, 0.15482, 0.14987, 0.14532, 0.1411, 0.13716,
    0.13342, 0.12986, 0.12644, 0.12314, 0.11993, 0.1168, 0.11374, 0.11073, 0.10778, 0.10486,
    0.10199, 0.099153, 0.096355, 0.093592, 0.090866,
];

const KEV_SI: [f32; 185] = [
    0.0049814, 0.0050576, 0.005078, 0.0051085, 0.0051847, 0.01069, 0.01113, 0.0113, 0.011346,
    0.011414, 0.011428, 0.011584, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054,
    0.018231, 0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109,
    0.033235, 0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05302, 0.056679,
    0.06059, 0.06477, 0.069239, 0.074017, 0.079124, 0.084584, 0.09042, 0.096659, 0.097216,
    0.098704, 0.099101, 0.099696, 0.10118, 0.10333, 0.11046, 0.11808, 0.12623, 0.13494, 0.14425,
    0.14573, 0.14796, 0.14855, 0.14944, 0.15167, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137,
    0.21527, 0.23012, 0.246, 0.26297, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244,
    0.41952, 0.44847, 0.47941, 0.51249, 0.54785, 0.58565, 0.62606, 0.66926, 0.71544, 0.76481,
    0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933,
    1.7033, 1.8021, 1.8208, 1.8297, 1.8371, 1.8481, 1.8757, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418,
    2.7172, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609,
    6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.793, 12.607,
    13.477, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077,
    30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529,
    66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27, 139.26,
    148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11, 310.13,
    331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_SI: [f32; 185] = [
    2.106e-06, 2.2934e-06, 2.3455e-06, 5.4064e+05, 5.6283e+05, 69340.0, 55167.0, 50670.0, 49550.0,
    49471.0, 49156.0, 45733.0, 34829.0, 25351.0, 19091.0, 14960.0, 12246.0, 10487.0, 9381.1,
    8729.0, 8395.1, 8291.3, 8344.5, 8497.9, 8707.5, 8938.9, 9164.4, 9362.4, 9516.5, 9615.3, 9651.8,
    9623.2, 9529.1, 9365.6, 9138.5, 8857.2, 8531.8, 8171.8, 7786.1, 7383.0, 6969.5, 6551.9, 6135.4,
    5705.1, 5661.3, 5546.0, 5515.7, 1.083e+05, 1.0885e+05, 1.0963e+05, 1.1215e+05, 1.1257e+05,
    1.1004e+05, 1.0513e+05, 98468.0, 97336.0, 95604.0, 95138.0, 1.0435e+05, 1.0252e+05, 1.0045e+05,
    91788.0, 82925.0, 74172.0, 65786.0, 57934.0, 50707.0, 44157.0, 38290.0, 33082.0, 28495.0,
    24479.0, 20981.0, 17946.0, 15323.0, 13061.0, 11113.0, 9440.1, 8008.0, 6784.8, 5742.4, 4855.2,
    4101.3, 3461.5, 2919.9, 2461.8, 2075.2, 1749.1, 1474.4, 1225.1, 1018.6, 847.79, 706.33, 589.07,
    491.79, 411.0, 343.85, 295.95, 287.98, 284.27, 281.27, 3311.5, 3221.7, 2996.3, 2542.8, 2131.6,
    1780.5, 1494.8, 1257.0, 1057.2, 885.93, 740.32, 618.72, 515.05, 426.77, 353.66, 293.11, 242.97,
    201.42, 167.0, 138.48, 114.86, 95.28, 79.055, 65.607, 54.16, 44.613, 36.539, 29.938, 24.541,
    20.129, 16.519, 13.566, 11.15, 9.1726, 7.554, 6.2286, 5.1429, 4.2534, 3.5245, 2.9268, 2.4365,
    2.0342, 1.6969, 1.4192, 1.1925, 1.0073, 0.85575, 0.7317, 0.62826, 0.54372, 0.47454, 0.41781,
    0.37119, 0.33278, 0.30103, 0.27471, 0.2528, 0.23447, 0.21903, 0.20595, 0.19478, 0.18518,
    0.17684, 0.16952, 0.16304, 0.15723, 0.15198, 0.14717, 0.14272, 0.13856, 0.13464, 0.13093,
    0.12737, 0.12394, 0.12062, 0.11739, 0.11425, 0.11117, 0.10814, 0.10518, 0.10226, 0.099388,
    0.09656, 0.093776,
];

const KEV_TI: [f32; 190] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.033908, 0.034427, 0.034565, 0.034773, 0.035292, 0.035528, 0.03798, 0.040601, 0.043402,
    0.046397, 0.049598, 0.05302, 0.056679, 0.059094, 0.059999, 0.06024, 0.06059, 0.060602,
    0.061506, 0.06477, 0.069239, 0.074017, 0.079124, 0.084584, 0.09042, 0.096659, 0.10333, 0.11046,
    0.11808, 0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527,
    0.23012, 0.246, 0.26297, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.41952,
    0.44639, 0.44847, 0.45227, 0.45322, 0.45504, 0.45778, 0.45919, 0.46104, 0.46381, 0.46461,
    0.47073, 0.47941, 0.51249, 0.54785, 0.55243, 0.56088, 0.56314, 0.56652, 0.57497, 0.58565,
    0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201,
    1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172,
    2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.8671, 4.9416, 4.9537, 4.9614,
    4.9912, 5.0657, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539,
    10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5,
    22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882,
    51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64,
    113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48,
    253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_TI: [f32; 190] = [
    0.00014127, 0.00019172, 0.00025877, 0.00034738, 0.00046384, 0.00061603, 0.00081382, 0.0010694,
    0.001398, 0.001818, 0.002352, 0.0030271, 0.0038762, 0.0049383, 0.0062598, 0.0078952, 0.0099085,
    0.012374, 0.013215, 0.013886, 0.014069, 1.114e+05, 98018.0, 92523.0, 51992.0, 31199.0, 21267.0,
    16102.0, 13276.0, 11718.0, 10910.0, 10661.0, 10607.0, 10596.0, 15404.0, 15403.0, 15399.0,
    15493.0, 15797.0, 16205.0, 16658.0, 17114.0, 17531.0, 17872.0, 18104.0, 18200.0, 18139.0,
    17912.0, 17516.0, 16956.0, 16227.0, 15361.0, 14392.0, 13357.0, 12290.0, 11220.0, 10173.0,
    9166.9, 8215.8, 7328.7, 6511.1, 5765.0, 5089.8, 4482.9, 3940.5, 3458.3, 3059.0, 3031.0, 2980.5,
    2968.1, 2944.5, 21326.0, 21177.0, 20986.0, 29710.0, 29593.0, 28729.0, 27565.0, 23695.0,
    20320.0, 19931.0, 19236.0, 19056.0, 21354.0, 20661.0, 19828.0, 17063.0, 14655.0, 12562.0,
    10759.0, 9175.6, 7812.0, 6648.1, 5654.1, 4759.0, 4003.9, 3367.4, 2832.2, 2382.6, 2005.0,
    1688.0, 1421.9, 1198.4, 1003.7, 841.11, 705.79, 590.72, 494.44, 414.29, 347.49, 289.0, 238.46,
    197.02, 162.98, 134.99, 111.96, 92.975, 81.168, 77.838, 77.316, 76.983, 697.78, 668.93, 591.07,
    496.29, 418.5, 353.27, 296.29, 248.22, 207.81, 173.94, 145.43, 121.17, 100.59, 83.249, 68.894,
    57.028, 47.22, 39.109, 32.402, 26.854, 22.264, 18.468, 15.325, 12.725, 10.508, 8.6841, 7.1826,
    5.9158, 4.87, 4.015, 3.3158, 2.7438, 2.2758, 1.8925, 1.5786, 1.3214, 1.1105, 0.93748, 0.79538,
    0.67859, 0.5825, 0.50333, 0.43803, 0.38373, 0.33818, 0.30058, 0.26943, 0.24355, 0.22195,
    0.20386, 0.1886, 0.17567, 0.16463, 0.15514, 0.14691, 0.1397, 0.13335, 0.12768, 0.12257,
    0.11792, 0.11366, 0.10972, 0.10603, 0.10256, 0.099272, 0.096139, 0.093138, 0.09025, 0.087461,
];

const KEV_CR: [f32; 189] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.035528, 0.03798, 0.040601, 0.04165, 0.042287, 0.042458, 0.042713, 0.04335, 0.043402,
    0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477, 0.069239, 0.072618, 0.07373, 0.074017,
    0.074026, 0.07447, 0.075582, 0.079124, 0.084584, 0.09042, 0.096659, 0.10333, 0.11046, 0.11808,
    0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246,
    0.26297, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941,
    0.51249, 0.54785, 0.56301, 0.57203, 0.57393, 0.57737, 0.58078, 0.58312, 0.58565, 0.58599,
    0.58662, 0.59537, 0.62606, 0.66926, 0.68071, 0.69113, 0.69391, 0.69807, 0.70849, 0.71544,
    0.76481, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905,
    1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194,
    3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 5.8694, 5.9593, 5.9832, 6.0191,
    6.0515, 6.109, 6.469, 6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.793,
    12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265,
    28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493,
    62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27,
    139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11,
    310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_CR: [f32; 189] = [
    1.5492e+05, 1.5242e+05, 1.4998e+05, 1.4755e+05, 1.451e+05, 1.4257e+05, 1.3994e+05, 1.3718e+05,
    1.3427e+05, 1.3118e+05, 1.2791e+05, 1.2446e+05, 1.2082e+05, 1.1701e+05, 1.1303e+05, 1.0891e+05,
    1.0466e+05, 1.0032e+05, 95907.0, 91450.0, 86981.0, 85274.0, 84260.0, 83992.0, 1.9164e+05,
    1.7608e+05, 1.7486e+05, 1.2331e+05, 94676.0, 78301.0, 67227.0, 58853.0, 52095.0, 46448.0,
    42946.0, 41910.0, 41651.0, 41643.0, 44808.0, 43882.0, 41220.0, 37830.0, 34906.0, 32374.0,
    30175.0, 28248.0, 26536.0, 24985.0, 23550.0, 22186.0, 20864.0, 19561.0, 18262.0, 16948.0,
    15627.0, 14314.0, 13028.0, 11785.0, 10600.0, 9485.5, 8448.6, 7494.0, 6623.1, 5835.4, 5127.9,
    4496.4, 3935.5, 3439.6, 3002.8, 2618.9, 2475.8, 2396.2, 2379.8, 16386.0, 16149.0, 15989.0,
    22674.0, 22641.0, 22581.0, 21764.0, 19206.0, 16282.0, 15617.0, 15046.0, 14898.0, 16664.0,
    16102.0, 15742.0, 13493.0, 11558.0, 9883.6, 8445.1, 7208.3, 6084.9, 5134.1, 4325.9, 3640.8,
    3064.0, 2577.8, 2169.1, 1825.7, 1537.2, 1295.0, 1091.5, 920.68, 774.63, 649.69, 545.58, 457.53,
    380.33, 313.98, 259.53, 214.77, 177.96, 147.65, 122.65, 102.03, 84.987, 70.888, 64.284, 61.707,
    61.043, 528.53, 520.48, 506.54, 432.35, 363.75, 307.03, 258.85, 217.21, 181.95, 151.82, 126.71,
    105.76, 88.283, 73.235, 60.627, 50.186, 41.555, 34.42, 28.519, 23.639, 19.601, 16.262, 13.497,
    11.21, 9.3084, 7.6676, 6.3126, 5.2032, 4.2946, 3.5499, 2.9397, 2.4396, 2.0295, 1.693, 1.4168,
    1.19, 1.0037, 0.85043, 0.72429, 0.62037, 0.53466, 0.46337, 0.40359, 0.35431, 0.31359, 0.27984,
    0.2518, 0.2284, 0.20879, 0.19229, 0.17831, 0.1664, 0.15618, 0.14734, 0.13964, 0.13286, 0.12684,
    0.12145, 0.11657, 0.11212, 0.10802, 0.10421, 0.10065, 0.0973, 0.094121, 0.091093, 0.088194,
];

const KEV_MN: [f32; 199] = [
    0.0070009, 0.0071081, 0.0071164, 0.0071366, 0.0071795, 0.0072253, 0.0072543, 0.0072867,
    0.0072979, 0.0074068, 0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953,
    0.017054, 0.018231, 0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083,
    0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.047628, 0.048357,
    0.048551, 0.048843, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477, 0.069239, 0.074017,
    0.079124, 0.082222, 0.08348, 0.083816, 0.08432, 0.084584, 0.085578, 0.09042, 0.096659, 0.10333,
    0.11046, 0.11808, 0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137,
    0.21527, 0.23012, 0.246, 0.26297, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244,
    0.41952, 0.44847, 0.47941, 0.51249, 0.54785, 0.58565, 0.62606, 0.62749, 0.6371, 0.63837,
    0.63966, 0.6435, 0.64814, 0.65075, 0.65311, 0.65466, 0.66443, 0.66926, 0.71544, 0.75362,
    0.76481, 0.76516, 0.76823, 0.77285, 0.78438, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677,
    1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778,
    2.5418, 2.7172, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955,
    5.6609, 6.0515, 6.4082, 6.469, 6.5063, 6.5325, 6.5717, 6.6698, 6.9154, 7.3925, 7.9026, 8.4479,
    9.0308, 9.6539, 10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814,
    20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9,
    44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314,
    99.752, 106.64, 113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82,
    222.15, 237.48, 253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_MN: [f32; 199] = [
    1.8048e-05, 1.9528e-05, 1.9646e-05, 1.9938e-05, 9237.2, 9298.5, 9337.4, 45441.0, 45514.0,
    46220.0, 64199.0, 67239.0, 70201.0, 73081.0, 75867.0, 78543.0, 81089.0, 83479.0, 85683.0,
    87669.0, 89401.0, 90842.0, 91957.0, 92709.0, 93068.0, 93005.0, 92415.0, 91232.0, 89479.0,
    87191.0, 84415.0, 81205.0, 77628.0, 76138.0, 75254.0, 75018.0, 1.1099e+05, 1.0694e+05, 92074.0,
    81167.0, 73253.0, 66892.0, 61443.0, 56611.0, 52253.0, 49929.0, 49044.0, 48814.0, 52172.0,
    51996.0, 51343.0, 48412.0, 45145.0, 42140.0, 39371.0, 36811.0, 34431.0, 32192.0, 29529.0,
    27010.0, 24690.0, 22541.0, 20541.0, 18671.0, 16909.0, 15251.0, 13699.0, 12254.0, 10920.0,
    9693.1, 8575.0, 7562.2, 6649.9, 5832.9, 5105.1, 4459.6, 3889.6, 3387.9, 2947.7, 2562.4, 2226.1,
    2215.4, 2145.3, 2136.3, 2127.2, 13733.0, 13495.0, 13363.0, 18940.0, 18831.0, 18160.0, 17841.0,
    15154.0, 13348.0, 12877.0, 12863.0, 12738.0, 14290.0, 13809.0, 12546.0, 10750.0, 9199.7,
    7863.9, 6690.3, 5658.2, 4773.4, 4026.6, 3388.6, 2851.6, 2399.6, 2018.9, 1699.0, 1430.4, 1204.7,
    1015.1, 856.0, 722.31, 606.73, 509.56, 425.02, 351.03, 290.25, 240.29, 199.16, 165.28, 137.33,
    114.26, 95.19, 79.409, 66.334, 56.903, 55.488, 54.645, 54.064, 457.27, 437.88, 394.66, 331.47,
    279.83, 236.17, 198.08, 165.38, 138.11, 115.36, 96.376, 80.521, 67.017, 55.521, 45.981, 38.09,
    31.563, 26.164, 21.698, 18.001, 14.941, 12.408, 10.311, 8.5359, 7.0311, 5.7938, 4.78, 3.9494,
    3.2683, 2.7097, 2.2516, 1.8756, 1.567, 1.3136, 1.1052, 0.93385, 0.79285, 0.67672, 0.58096,
    0.50137, 0.43468, 0.37974, 0.33438, 0.29685, 0.2657, 0.23977, 0.2181, 0.1999, 0.18452, 0.17148,
    0.16032, 0.15072, 0.14239, 0.13509, 0.12865, 0.1229, 0.11771, 0.11301, 0.10869, 0.10469,
    0.10096, 0.097453, 0.094138, 0.090983, 0.087966,
];

const KEV_FE: [f32; 190] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05292, 0.05302, 0.05373, 0.053946,
    0.05427, 0.05508, 0.056679, 0.06059, 0.06477, 0.069239, 0.074017, 0.079124, 0.084584, 0.09042,
    0.091042, 0.092436, 0.092807, 0.093365, 0.094758, 0.096659, 0.10333, 0.11046, 0.11808, 0.12623,
    0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246, 0.26297,
    0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941, 0.51249,
    0.54785, 0.58565, 0.62606, 0.66926, 0.69394, 0.70456, 0.70668, 0.70739, 0.71164, 0.71544,
    0.71749, 0.72038, 0.72226, 0.72471, 0.73552, 0.76481, 0.81758, 0.82918, 0.84187, 0.84525,
    0.85033, 0.86302, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905,
    1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194,
    3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 6.9698,
    7.0764, 7.1049, 7.1476, 7.2542, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.793,
    12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265,
    28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493,
    62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27,
    139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11,
    310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_FE: [f32; 190] = [
    1.0037e+05, 1.013e+05, 1.0234e+05, 1.0346e+05, 1.0464e+05, 1.0583e+05, 1.0691e+05, 1.0785e+05,
    1.0861e+05, 1.0917e+05, 1.0949e+05, 1.0956e+05, 1.0937e+05, 1.0891e+05, 1.0818e+05, 1.0718e+05,
    1.0592e+05, 1.0427e+05, 1.0216e+05, 99741.0, 97039.0, 94080.0, 90896.0, 87520.0, 84092.0,
    83990.0, 83272.0, 83054.0, 1.1121e+05, 1.0824e+05, 1.0296e+05, 92554.0, 84927.0, 77903.0,
    70070.0, 63163.0, 57003.0, 51487.0, 50954.0, 49795.0, 49494.0, 52465.0, 51383.0, 49973.0,
    45571.0, 41626.0, 38081.0, 34893.0, 32019.0, 29414.0, 27038.0, 24854.0, 22832.0, 20947.0,
    19179.0, 17514.0, 15939.0, 14443.0, 13032.0, 11706.0, 10470.0, 9327.6, 8279.1, 7323.5, 6458.3,
    5679.3, 4982.1, 4361.1, 3810.5, 3324.2, 2896.2, 2520.6, 2191.7, 2031.0, 1967.0, 1954.6, 1950.4,
    12347.0, 12184.0, 12097.0, 11977.0, 17000.0, 16857.0, 16244.0, 14732.0, 12474.0, 12047.0,
    11603.0, 11489.0, 12905.0, 12465.0, 12102.0, 10355.0, 8860.7, 7546.0, 6423.0, 5457.9, 4604.3,
    3884.3, 3271.8, 2752.9, 2316.1, 1948.3, 1639.2, 1379.5, 1161.5, 978.6, 825.0, 696.04, 586.74,
    489.54, 406.26, 336.46, 278.57, 230.92, 191.64, 159.24, 132.48, 110.35, 92.046, 76.873, 64.287,
    53.834, 52.729, 50.652, 50.118, 412.93, 395.27, 373.87, 313.02, 264.49, 222.99, 186.41, 155.7,
    130.07, 108.68, 90.83, 75.925, 63.364, 52.527, 43.541, 36.092, 29.926, 24.823, 20.599, 17.102,
    14.205, 11.806, 9.7736, 8.0858, 6.6748, 5.5048, 4.5458, 3.7595, 3.1145, 2.5851, 2.1506, 1.7938,
    1.5008, 1.2599, 1.0618, 0.89883, 0.76457, 0.65389, 0.56188, 0.48476, 0.42128, 0.36894, 0.32567,
    0.28983, 0.26003, 0.23518, 0.21436, 0.19685, 0.18202, 0.16941, 0.1586, 0.14925, 0.14112,
    0.13397, 0.12765, 0.12198, 0.11687, 0.1122, 0.10791, 0.10394, 0.10022, 0.096729, 0.09342,
    0.09027,
];

const KEV_CO: [f32; 190] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05302, 0.056679, 0.05831,
    0.059202, 0.059441, 0.059798, 0.06059, 0.06069, 0.06477, 0.069239, 0.074017, 0.079124,
    0.084584, 0.09042, 0.096659, 0.098686, 0.1002, 0.1006, 0.1012, 0.10271, 0.10333, 0.11046,
    0.11808, 0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527,
    0.23012, 0.246, 0.26297, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.41952,
    0.44847, 0.47941, 0.51249, 0.54785, 0.58565, 0.62606, 0.66926, 0.71544, 0.76303, 0.76481,
    0.77471, 0.77773, 0.77782, 0.78249, 0.78963, 0.79281, 0.79417, 0.79757, 0.80947, 0.81758,
    0.87399, 0.90709, 0.92097, 0.92467, 0.93023, 0.93429, 0.94411, 0.99876, 1.0677, 1.1413, 1.2201,
    1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172,
    2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515,
    6.469, 6.9154, 7.3925, 7.5547, 7.6704, 7.7012, 7.7474, 7.8631, 7.9026, 8.4479, 9.0308, 9.6539,
    10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5,
    22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882,
    51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64,
    113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48,
    253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_CO: [f32; 190] = [
    1.0395e+05, 1.0485e+05, 1.0588e+05, 1.0696e+05, 1.0804e+05, 1.091e+05, 1.1009e+05, 1.1099e+05,
    1.1177e+05, 1.1239e+05, 1.1284e+05, 1.1309e+05, 1.1314e+05, 1.1297e+05, 1.1258e+05, 1.1196e+05,
    1.1112e+05, 1.1008e+05, 1.0883e+05, 1.074e+05, 1.0581e+05, 1.0372e+05, 1.0116e+05, 98394.0,
    95446.0, 89904.0, 86874.0, 85265.0, 84842.0, 1.0656e+05, 1.0379e+05, 1.0344e+05, 91080.0,
    80619.0, 72160.0, 64948.0, 58619.0, 52987.0, 47948.0, 46490.0, 45454.0, 45185.0, 47867.0,
    46898.0, 46514.0, 42475.0, 38853.0, 35591.0, 32650.0, 29988.0, 27569.0, 25357.0, 23319.0,
    21429.0, 19665.0, 18008.0, 16449.0, 14978.0, 13583.0, 12263.0, 11024.0, 9867.9, 8798.7, 7816.3,
    6920.3, 6108.4, 5376.6, 4721.0, 4136.4, 3617.7, 3159.1, 2755.0, 2400.0, 2088.9, 1825.7, 1816.8,
    1768.4, 1754.2, 1753.7, 10780.0, 10533.0, 10426.0, 14822.0, 14661.0, 14114.0, 13757.0, 11593.0,
    10553.0, 10158.0, 10057.0, 11242.0, 11129.0, 10862.0, 9540.9, 8151.6, 6954.2, 5924.2, 5045.2,
    4262.7, 3592.2, 3025.4, 2544.8, 2140.8, 1800.9, 1515.2, 1275.4, 1074.1, 905.1, 763.26, 644.14,
    540.76, 449.01, 372.97, 309.7, 256.67, 212.97, 176.91, 147.14, 122.53, 102.16, 85.288, 71.294,
    59.676, 50.016, 47.238, 45.39, 44.915, 360.46, 344.98, 339.89, 283.67, 239.94, 201.36, 168.45,
    140.7, 117.54, 98.209, 82.079, 68.614, 57.363, 47.589, 39.482, 32.748, 27.173, 22.555, 18.73,
    15.561, 12.935, 10.709, 8.8608, 7.3372, 6.0688, 5.0097, 4.141, 3.4282, 2.8433, 2.3629, 1.9684,
    1.6442, 1.3778, 1.1586, 0.97822, 0.82966, 0.70722, 0.60547, 0.52026, 0.45014, 0.39234, 0.34458,
    0.30505, 0.27223, 0.24489, 0.22204, 0.20284, 0.18666, 0.17291, 0.16118, 0.15108, 0.14233,
    0.13468, 0.12795, 0.12196, 0.11658, 0.1117, 0.10724, 0.10314, 0.099325, 0.095756, 0.092392,
    0.089206,
];

const KEV_NI: [f32; 189] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477,
    0.066738, 0.06776, 0.068032, 0.068441, 0.069239, 0.069462, 0.074017, 0.079124, 0.084584,
    0.09042, 0.096659, 0.10333, 0.10956, 0.11046, 0.11124, 0.11169, 0.11236, 0.11404, 0.11808,
    0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246,
    0.26297, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941,
    0.51249, 0.54785, 0.58565, 0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.83761, 0.85043,
    0.85446, 0.85897, 0.86754, 0.87103, 0.87179, 0.87399, 0.87626, 0.88934, 0.93429, 0.98794,
    0.99876, 1.0031, 1.0071, 1.0131, 1.0283, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905,
    1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194,
    3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925,
    7.9026, 8.1661, 8.2911, 8.3245, 8.3745, 8.4479, 8.4995, 9.0308, 9.6539, 10.32, 11.032, 11.793,
    12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265,
    28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493,
    62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27,
    139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11,
    310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_NI: [f32; 189] = [
    96199.0, 96924.0, 97839.0, 98922.0, 1.0015e+05, 1.0149e+05, 1.0285e+05, 1.0418e+05, 1.0544e+05,
    1.066e+05, 1.0762e+05, 1.0849e+05, 1.0917e+05, 1.0965e+05, 1.099e+05, 1.0991e+05, 1.0967e+05,
    1.092e+05, 1.0847e+05, 1.0752e+05, 1.0634e+05, 1.0495e+05, 1.0338e+05, 1.0164e+05, 99415.0,
    96684.0, 93751.0, 90650.0, 89212.0, 88337.0, 87907.0, 1.0481e+05, 1.0272e+05, 1.0215e+05,
    91562.0, 81936.0, 73820.0, 66710.0, 60352.0, 54620.0, 50042.0, 49438.0, 48920.0, 48628.0,
    51047.0, 49994.0, 47611.0, 43391.0, 39572.0, 36111.0, 32973.0, 30122.0, 27524.0, 25146.0,
    22959.0, 20939.0, 19064.0, 17320.0, 15696.0, 14181.0, 12763.0, 11441.0, 10217.0, 9089.3,
    8058.2, 7121.1, 6274.9, 5514.8, 4835.4, 4231.2, 3696.0, 3223.8, 2808.6, 2444.4, 2125.8, 1847.8,
    1755.9, 1700.5, 1683.6, 9952.2, 9703.1, 9604.2, 9582.6, 13547.0, 13457.0, 12957.0, 11421.0,
    9910.0, 9641.0, 9536.0, 9438.6, 10573.0, 10196.0, 9299.6, 7919.2, 6753.8, 5763.2, 4903.6,
    4157.3, 3503.6, 2951.9, 2487.1, 2096.0, 1765.2, 1484.7, 1249.3, 1051.9, 886.28, 747.38, 626.92,
    523.36, 435.9, 362.08, 301.19, 250.93, 208.39, 173.16, 144.06, 119.98, 100.06, 83.554, 69.859,
    58.485, 49.027, 44.977, 43.221, 42.769, 333.91, 325.45, 319.67, 271.8, 229.7, 192.52, 160.54,
    134.07, 112.0, 93.573, 78.199, 65.367, 54.649, 45.418, 37.707, 31.316, 26.017, 21.609, 17.956,
    14.927, 12.361, 10.228, 8.469, 7.019, 5.8159, 4.8054, 3.976, 3.2952, 2.7362, 2.277, 1.8995,
    1.5892, 1.3339, 1.1238, 0.95072, 0.80808, 0.6897, 0.59076, 0.50932, 0.44215, 0.38667, 0.34073,
    0.30261, 0.27088, 0.24438, 0.22215, 0.20343, 0.18758, 0.17408, 0.16252, 0.15253, 0.14383,
    0.1362, 0.12947, 0.12344, 0.11802, 0.11309, 0.10857, 0.1044, 0.10052, 0.096876, 0.093442,
];

const KEV_CU: [f32; 187] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477,
    0.069239, 0.072128, 0.073232, 0.073526, 0.074017, 0.075072, 0.079124, 0.084584, 0.09042,
    0.096659, 0.10333, 0.11046, 0.1174, 0.11808, 0.1192, 0.11968, 0.1204, 0.1222, 0.12623, 0.13494,
    0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246, 0.26297, 0.28112,
    0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941, 0.51249, 0.54785,
    0.58565, 0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.87399, 0.91248, 0.92644, 0.93017,
    0.93198, 0.93429, 0.93576, 0.94625, 0.95005, 0.95576, 0.97002, 0.99876, 1.0677, 1.0742, 1.0906,
    1.095, 1.1016, 1.118, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.8208, 1.9464,
    2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348,
    4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479, 8.7993, 8.934,
    8.9699, 9.0308, 9.1585, 9.6539, 10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464,
    17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666,
    39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386, 81.656,
    87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85,
    194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0,
    432.95,
];

const MU_CU: [f32; 187] = [
    1.3463e+05, 1.3264e+05, 1.3078e+05, 1.2905e+05, 1.2743e+05, 1.2591e+05, 1.2447e+05, 1.231e+05,
    1.2177e+05, 1.2049e+05, 1.1922e+05, 1.1795e+05, 1.1667e+05, 1.1536e+05, 1.14e+05, 1.1259e+05,
    1.0954e+05, 1.0499e+05, 1.0045e+05, 95904.0, 91369.0, 86848.0, 82351.0, 77886.0, 73465.0,
    69102.0, 64809.0, 60600.0, 56490.0, 54027.0, 53123.0, 52886.0, 77537.0, 74465.0, 64727.0,
    55532.0, 49158.0, 44255.0, 40201.0, 36710.0, 33890.0, 33640.0, 33234.0, 33064.0, 34962.0,
    34361.0, 33098.0, 30710.0, 28550.0, 26580.0, 24774.0, 23107.0, 21554.0, 20094.0, 18708.0,
    17382.0, 16104.0, 14871.0, 13678.0, 12527.0, 11414.0, 10344.0, 9327.9, 8371.2, 7479.8, 6656.9,
    5903.6, 5219.1, 4601.4, 4047.1, 3552.6, 3113.2, 2724.6, 2352.4, 2024.2, 1743.1, 1583.3, 1530.7,
    1517.1, 9326.0, 9249.2, 9201.2, 8865.9, 8748.3, 12337.0, 11723.0, 10603.0, 8602.2, 8453.7,
    8097.1, 8006.3, 8812.0, 8523.8, 8151.0, 6985.4, 5961.0, 5080.9, 4334.3, 3698.2, 3122.2, 2634.3,
    2222.7, 1875.3, 1581.1, 1329.6, 1118.6, 941.78, 793.66, 665.4, 555.21, 463.74, 387.22, 321.83,
    267.85, 223.25, 185.75, 154.44, 128.55, 107.14, 89.404, 74.701, 62.497, 52.356, 43.919, 39.475,
    37.905, 37.472, 284.68, 273.18, 235.25, 197.28, 166.28, 140.23, 117.48, 98.28, 82.115, 68.553,
    57.211, 47.749, 39.716, 32.995, 27.422, 22.797, 18.952, 15.759, 13.052, 10.801, 8.945, 7.4136,
    6.15, 5.1043, 4.2217, 3.4968, 2.9016, 2.4124, 2.0104, 1.6796, 1.4076, 1.1836, 0.9991, 0.84703,
    0.72087, 0.61553, 0.52879, 0.45727, 0.39821, 0.34934, 0.30882, 0.27512, 0.247, 0.22346,
    0.20368, 0.18697, 0.17278, 0.16064, 0.15021, 0.14116, 0.13327, 0.12632, 0.12015, 0.11461,
    0.10961, 0.10505, 0.10086, 0.096977, 0.093355, 0.089953,
];

const KEV_ZN: [f32; 194] = [
    0.007938, 0.0080595, 0.0080919, 0.0081405, 0.008262, 0.01069, 0.011428, 0.012216, 0.013059,
    0.01396, 0.014923, 0.015953, 0.017054, 0.018231, 0.019488, 0.020833, 0.022271, 0.023807,
    0.02545, 0.027206, 0.029083, 0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402,
    0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477, 0.069239, 0.074017, 0.079124,
    0.084584, 0.084868, 0.086167, 0.086513, 0.087033, 0.088332, 0.09042, 0.096659, 0.10333,
    0.11046, 0.11808, 0.12623, 0.13318, 0.13494, 0.13522, 0.13576, 0.13658, 0.13862, 0.14425,
    0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246, 0.26297, 0.28112, 0.30051,
    0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941, 0.51249, 0.54785, 0.58565,
    0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.87399, 0.93429, 0.99876, 0.99931, 1.0146,
    1.0187, 1.0219, 1.0248, 1.0376, 1.0401, 1.0418, 1.048, 1.0637, 1.0677, 1.1413, 1.1697, 1.1876,
    1.1924, 1.1996, 1.2175, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.8208, 1.9464, 2.0807,
    2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348, 4.6339,
    4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.4654, 9.6103,
    9.6539, 9.7069, 9.8518, 10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464, 17.6,
    18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195,
    41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386, 81.656, 87.291,
    93.314, 99.752, 106.64, 113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4,
    207.82, 222.15, 237.48, 253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_ZN: [f32; 194] = [
    2.0403e-05, 2.2107e-05, 2.2579e-05, 52275.0, 52416.0, 55176.0, 56102.0, 57145.0, 58313.0,
    59612.0, 61041.0, 62600.0, 64283.0, 66081.0, 67982.0, 69969.0, 72024.0, 74123.0, 76237.0,
    78335.0, 80383.0, 82341.0, 84158.0, 85679.0, 86845.0, 87636.0, 88040.0, 88054.0, 87682.0,
    86937.0, 85841.0, 84420.0, 82586.0, 80271.0, 77641.0, 74738.0, 71607.0, 71444.0, 70702.0,
    70505.0, 80620.0, 79386.0, 77473.0, 72228.0, 67553.0, 63343.0, 59437.0, 55764.0, 52958.0,
    52293.0, 52187.0, 51985.0, 53861.0, 53125.0, 51190.0, 47738.0, 43223.0, 39069.0, 35263.0,
    31785.0, 28612.0, 25721.0, 23088.0, 20691.0, 18507.0, 16520.0, 14713.0, 13072.0, 11582.0,
    10231.0, 9008.9, 7910.6, 6928.1, 6053.4, 5278.3, 4594.1, 3992.6, 3465.3, 3004.9, 2603.7,
    2255.1, 1952.5, 1690.5, 1463.8, 1462.1, 1407.5, 1393.3, 25994.0, 23897.0, 16520.0, 15390.0,
    14689.0, 23175.0, 14923.0, 13369.0, 5788.7, 5404.5, 5298.1, 5279.0, 6236.3, 6184.3, 6179.5,
    6216.7, 6007.6, 5425.7, 4659.3, 3851.3, 3128.7, 2540.6, 2091.5, 1758.4, 1480.3, 1244.9, 1047.4,
    881.94, 738.73, 615.77, 513.79, 429.14, 358.79, 300.31, 250.6, 208.82, 173.97, 144.64, 120.39,
    100.34, 83.741, 69.977, 58.554, 49.063, 41.012, 35.84, 34.319, 33.878, 257.21, 246.05, 215.04,
    180.1, 151.8, 128.18, 107.42, 89.884, 75.106, 62.701, 52.326, 43.672, 36.365, 30.237, 25.147,
    20.92, 17.406, 14.419, 11.934, 9.8838, 8.1921, 6.7958, 5.6431, 4.6907, 3.8834, 3.2203, 2.6754,
    2.2274, 1.8588, 1.5556, 1.3058, 1.1001, 0.9306, 0.79002, 0.67271, 0.57616, 0.49657, 0.43087,
    0.37655, 0.33154, 0.29414, 0.263, 0.23695, 0.21511, 0.19669, 0.1811, 0.1678, 0.1564, 0.14655,
    0.13799, 0.13046, 0.12381, 0.11787, 0.11251, 0.10764, 0.10318, 0.099052, 0.09521, 0.091606,
];

const KEV_GE: [f32; 198] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.028126, 0.028556, 0.028671,
    0.028844, 0.029083, 0.029274, 0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402,
    0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477, 0.069239, 0.074017, 0.079124,
    0.084584, 0.09042, 0.096659, 0.10333, 0.11046, 0.11808, 0.11838, 0.1202, 0.12068, 0.1214,
    0.12322, 0.12534, 0.12623, 0.12726, 0.12777, 0.12854, 0.13046, 0.13494, 0.14425, 0.1542,
    0.16484, 0.17621, 0.1764, 0.1791, 0.17982, 0.1809, 0.1836, 0.18837, 0.20137, 0.21527, 0.23012,
    0.246, 0.26297, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847,
    0.47941, 0.51249, 0.54785, 0.58565, 0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.87399,
    0.93429, 0.99876, 1.0677, 1.1413, 1.1924, 1.2106, 1.2155, 1.2201, 1.2228, 1.2416, 1.2466,
    1.254, 1.2728, 1.3043, 1.386, 1.3943, 1.4072, 1.4129, 1.4214, 1.4426, 1.4905, 1.5933, 1.7033,
    1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933,
    4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479,
    9.0308, 9.6539, 10.32, 10.881, 11.032, 11.048, 11.092, 11.159, 11.325, 11.793, 12.607, 13.477,
    14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014,
    32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.843,
    71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27, 139.26, 148.86,
    159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11, 310.13, 331.53,
    354.4, 378.86, 405.0, 432.95,
];

const MU_GE: [f32; 198] = [
    0.00011051, 0.00015183, 0.00020744, 0.00028186, 0.00038087, 0.00051187, 0.0006842, 0.00090963,
    0.0012029, 0.0015823, 0.0020703, 0.0026947, 0.0034891, 0.0044944, 0.0057597, 0.0065051,
    0.0068742, 0.0069748, 17290.0, 17459.0, 17594.0, 18885.0, 20524.0, 22602.0, 25110.0, 28023.0,
    31304.0, 34899.0, 38731.0, 42704.0, 46702.0, 50596.0, 54248.0, 57524.0, 60297.0, 62462.0,
    63938.0, 64674.0, 64653.0, 63890.0, 62430.0, 60330.0, 60236.0, 59660.0, 59502.0, 61149.0,
    60595.0, 59922.0, 59635.0, 59297.0, 59128.0, 59686.0, 59065.0, 57581.0, 54389.0, 50941.0,
    47346.0, 43700.0, 43642.0, 42814.0, 42595.0, 44042.0, 43235.0, 41846.0, 38306.0, 34894.0,
    31643.0, 28578.0, 25716.0, 23062.0, 20618.0, 18382.0, 16347.0, 14502.0, 12838.0, 11341.0,
    9999.4, 8800.6, 7731.3, 6759.1, 5846.3, 5048.2, 4352.9, 3749.5, 3227.0, 2775.9, 2387.2, 2053.1,
    1766.3, 1485.4, 1251.0, 1118.9, 1076.5, 1065.6, 17929.0, 16771.0, 10761.0, 9594.8, 15616.0,
    10148.0, 6127.9, 4008.6, 3964.0, 3909.5, 3890.8, 4626.4, 4575.7, 4543.4, 4581.8, 4245.0,
    3721.3, 3127.0, 2567.2, 2097.3, 1725.0, 1441.6, 1213.7, 1022.3, 855.67, 712.82, 594.23, 495.81,
    414.12, 346.26, 289.83, 242.88, 203.7, 170.05, 142.08, 118.38, 98.654, 82.323, 68.785, 57.549,
    48.041, 39.648, 32.774, 28.21, 27.134, 27.027, 26.724, 200.4, 191.43, 169.51, 141.69, 119.44,
    101.01, 84.714, 70.907, 59.261, 49.481, 41.302, 34.484, 28.754, 23.943, 19.944, 16.54, 13.702,
    11.352, 9.4106, 7.807, 6.4824, 5.3876, 4.4828, 3.7348, 3.1001, 2.5769, 2.1465, 1.7921, 1.5004,
    1.26, 1.0619, 0.8977, 0.76086, 0.64817, 0.55528, 0.47861, 0.41524, 0.36276, 0.31922, 0.283,
    0.25279, 0.22752, 0.20629, 0.18837, 0.17319, 0.16023, 0.14913, 0.13953, 0.13118, 0.12385,
    0.11738, 0.1116, 0.10639, 0.10167, 0.097344, 0.093354, 0.089643,
];

const KEV_MO: [f32; 210] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.034104, 0.034626, 0.034765, 0.034974, 0.035528, 0.03798, 0.040601, 0.043402, 0.046397,
    0.049598, 0.05302, 0.056679, 0.06059, 0.061491, 0.061738, 0.062109, 0.063036, 0.06477,
    0.069239, 0.074017, 0.079124, 0.084584, 0.09042, 0.096659, 0.10333, 0.11046, 0.11808, 0.12623,
    0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.22246, 0.22569,
    0.22587, 0.22677, 0.22814, 0.22915, 0.23012, 0.23145, 0.23154, 0.23491, 0.246, 0.26297,
    0.28112, 0.30051, 0.32125, 0.34341, 0.36711, 0.38445, 0.39034, 0.39191, 0.39244, 0.39426,
    0.40015, 0.40151, 0.40765, 0.40929, 0.41175, 0.41789, 0.41952, 0.44847, 0.47941, 0.49451,
    0.50208, 0.5041, 0.50712, 0.51249, 0.51469, 0.54785, 0.58565, 0.62606, 0.66926, 0.71544,
    0.76481, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905,
    1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.4698, 2.5076, 2.5177, 2.5328, 2.5418,
    2.5726, 2.612, 2.6225, 2.6382, 2.6776, 2.7172, 2.8082, 2.8512, 2.8626, 2.8798, 2.9047, 2.9228,
    3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469,
    6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.793, 12.607, 13.477, 14.407,
    15.401, 16.464, 17.6, 18.814, 19.6, 19.899, 19.98, 20.112, 20.399, 21.5, 22.983, 24.569,
    26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717,
    58.493, 62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86,
    130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39,
    290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_MO: [f32; 210] = [
    1.7343e+05, 1.6734e+05, 1.6095e+05, 1.5429e+05, 1.4741e+05, 1.4036e+05, 1.3321e+05, 1.26e+05,
    1.188e+05, 1.1166e+05, 1.0464e+05, 97787.0, 91140.0, 84736.0, 78604.0, 72768.0, 67243.0,
    62040.0, 59921.0, 58489.0, 58115.0, 1.4998e+05, 1.4127e+05, 1.105e+05, 87909.0, 71394.0,
    58993.0, 49441.0, 41912.0, 35857.0, 30904.0, 29929.0, 29671.0, 30231.0, 29332.0, 27778.0,
    24404.0, 21550.0, 19109.0, 17008.0, 15187.0, 13601.0, 12212.0, 10992.0, 9915.9, 8963.1, 8116.9,
    7362.9, 6688.1, 6082.0, 5535.8, 5041.9, 4594.0, 4186.4, 3999.1, 3919.5, 3915.3, 3893.5, 7000.5,
    7070.3, 7139.5, 9372.2, 9384.3, 9866.7, 11819.0, 15691.0, 19609.0, 22801.0, 24814.0, 25517.0,
    25050.0, 24187.0, 23829.0, 23729.0, 26445.0, 26320.0, 25903.0, 25804.0, 25347.0, 25222.0,
    26175.0, 25693.0, 25564.0, 23240.0, 20823.0, 19709.0, 19170.0, 19029.0, 19647.0, 19272.0,
    19121.0, 16994.0, 14907.0, 13025.0, 11349.0, 9860.5, 8547.6, 7399.4, 6395.2, 5520.1, 4760.6,
    4037.2, 3426.3, 2910.9, 2476.0, 2108.6, 1798.1, 1533.9, 1302.9, 1106.7, 941.43, 801.45, 682.66,
    582.24, 532.16, 513.41, 508.58, 1934.6, 1915.2, 1851.4, 1774.0, 1754.1, 2405.7, 2310.7, 2221.5,
    2039.2, 1962.1, 1942.3, 2200.4, 2154.7, 2122.5, 1827.2, 1543.0, 1297.2, 1089.6, 916.0, 770.62,
    648.66, 546.51, 458.82, 384.13, 321.17, 268.66, 224.99, 188.61, 158.12, 132.68, 111.21, 92.557,
    77.102, 64.278, 53.456, 44.446, 36.876, 30.64, 25.496, 21.246, 17.732, 14.822, 13.29, 12.766,
    12.63, 80.588, 77.437, 67.047, 56.349, 47.46, 39.932, 33.374, 27.86, 23.268, 19.44, 16.248,
    13.588, 11.309, 9.3968, 7.8133, 6.5018, 5.4151, 4.5143, 3.7667, 3.1456, 2.631, 2.2043, 1.8483,
    1.5488, 1.2995, 1.0939, 0.92396, 0.78351, 0.66732, 0.57108, 0.49128, 0.42503, 0.36994, 0.32404,
    0.28573, 0.25366, 0.22674, 0.20407, 0.18492, 0.16866, 0.15478, 0.14289, 0.13262, 0.12372,
    0.11593, 0.10907, 0.10299, 0.097549,
];

const KEV_AG: [f32; 220] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083, 0.03109, 0.033235,
    0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05302, 0.054782, 0.055621,
    0.055844, 0.05618, 0.056679, 0.057018, 0.06059, 0.061348, 0.062287, 0.062537, 0.062913,
    0.063852, 0.06477, 0.069239, 0.074017, 0.079124, 0.084584, 0.09042, 0.093296, 0.094724,
    0.095105, 0.095676, 0.096659, 0.097104, 0.10333, 0.11046, 0.11808, 0.12623, 0.13494, 0.14425,
    0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246, 0.26297, 0.28112, 0.30051,
    0.32125, 0.34341, 0.35937, 0.36487, 0.36534, 0.36633, 0.36711, 0.36853, 0.37094, 0.37243,
    0.37403, 0.37466, 0.38026, 0.39244, 0.41952, 0.44847, 0.47941, 0.51249, 0.54785, 0.55997,
    0.56854, 0.57083, 0.57426, 0.58283, 0.58565, 0.59035, 0.59939, 0.6018, 0.60541, 0.61445,
    0.62606, 0.66926, 0.70315, 0.71391, 0.71544, 0.71678, 0.72109, 0.73185, 0.76481, 0.81758,
    0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933, 1.7033,
    1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.2841, 3.3194, 3.3343,
    3.3477, 3.3679, 3.4181, 3.4532, 3.5061, 3.5202, 3.5413, 3.5484, 3.5942, 3.7297, 3.7868, 3.7933,
    3.802, 3.8248, 3.8819, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154,
    7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401,
    16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 25.004, 25.386, 25.488, 25.642, 26.024,
    26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717,
    58.493, 62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86,
    130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39,
    290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_AG: [f32; 220] = [
    1.6775e+05, 1.6744e+05, 1.6651e+05, 1.6495e+05, 1.6268e+05, 1.5963e+05, 1.5586e+05, 1.5145e+05,
    1.4647e+05, 1.4104e+05, 1.3522e+05, 1.2913e+05, 1.2284e+05, 1.1645e+05, 1.1003e+05, 1.0364e+05,
    97352.0, 91213.0, 85263.0, 79537.0, 74059.0, 68847.0, 63911.0, 59258.0, 54888.0, 52849.0,
    51925.0, 51683.0, 73446.0, 71677.0, 70527.0, 60486.0, 58750.0, 56700.0, 56150.0, 65461.0,
    62625.0, 60099.0, 50409.0, 43330.0, 37899.0, 33503.0, 29815.0, 28273.0, 27562.0, 27378.0,
    27884.0, 27434.0, 27235.0, 24722.0, 22339.0, 20224.0, 18337.0, 16643.0, 15119.0, 13744.0,
    12501.0, 11373.0, 10349.0, 9417.8, 8568.2, 7792.3, 7081.7, 6430.0, 5831.7, 5282.4, 4778.3,
    4316.1, 4024.0, 3930.1, 3922.1, 3905.7, 8292.8, 8337.1, 8414.1, 8463.4, 11603.0, 11644.0,
    12020.0, 12920.0, 15163.0, 16871.0, 17651.0, 17525.0, 16680.0, 16287.0, 15989.0, 15907.0,
    17944.0, 17596.0, 17479.0, 17284.0, 16906.0, 16804.0, 17528.0, 17137.0, 16635.0, 14828.0,
    13515.0, 13123.0, 13068.0, 13020.0, 13430.0, 13048.0, 11954.0, 10427.0, 9063.3, 7861.5, 6808.5,
    5847.4, 5011.3, 4290.8, 3669.6, 3137.7, 2679.6, 2271.2, 1928.1, 1639.6, 1396.8, 1192.0, 1019.2,
    869.96, 740.12, 630.18, 537.24, 452.42, 388.21, 377.07, 372.51, 368.47, 1211.0, 1179.4, 1158.2,
    1127.6, 1119.0, 1506.7, 1500.3, 1460.1, 1343.0, 1292.8, 1287.2, 1279.7, 1449.4, 1396.9, 1248.7,
    1046.8, 877.86, 737.72, 620.24, 522.22, 440.09, 371.07, 312.41, 262.22, 220.01, 184.66, 154.78,
    128.76, 107.24, 89.393, 74.558, 62.254, 52.05, 43.548, 36.371, 30.368, 25.277, 21.067, 17.584,
    14.7, 12.307, 10.32, 9.8558, 9.4716, 9.3728, 55.433, 53.237, 51.919, 43.763, 36.879, 30.799,
    25.665, 21.44, 17.917, 14.981, 12.531, 10.487, 8.7792, 7.3111, 6.0933, 5.0827, 4.244, 3.5476,
    2.969, 2.4851, 2.0772, 1.7397, 1.4605, 1.2292, 1.0373, 0.87777, 0.74562, 0.63601, 0.54502,
    0.4694, 0.40647, 0.35402, 0.31023, 0.27359, 0.24286, 0.21701, 0.19519, 0.17672, 0.161, 0.14758,
    0.13605, 0.12609, 0.11743, 0.10986, 0.10319,
];

const KEV_SN: [f32; 219] = [
    0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054, 0.018231,
    0.019488, 0.020833, 0.022271, 0.023422, 0.02378, 0.023807, 0.023876, 0.024019, 0.024378,
    0.02545, 0.027206, 0.029083, 0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402,
    0.046397, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477, 0.069239, 0.074017, 0.079124,
    0.084584, 0.086828, 0.088157, 0.088511, 0.089043, 0.09042, 0.096659, 0.10333, 0.11046, 0.11808,
    0.12623, 0.13377, 0.13494, 0.13582, 0.13636, 0.13718, 0.13923, 0.14425, 0.1542, 0.16484,
    0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246, 0.26297, 0.28112, 0.30051, 0.32125,
    0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.4751, 0.47941, 0.48238, 0.48343, 0.48432,
    0.48722, 0.49083, 0.49281, 0.4945, 0.49577, 0.50317, 0.51249, 0.54785, 0.58565, 0.62606,
    0.66926, 0.70011, 0.71083, 0.71369, 0.71544, 0.71797, 0.72869, 0.74127, 0.75262, 0.75564,
    0.76018, 0.76481, 0.77153, 0.81758, 0.86612, 0.87399, 0.87938, 0.88292, 0.88822, 0.90148,
    0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.8208,
    1.9464, 2.0807, 2.2243, 2.3778, 2.5418, 2.7172, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 3.8502,
    3.9092, 3.9249, 3.9484, 4.0074, 4.055, 4.073, 4.1353, 4.1519, 4.1769, 4.2392, 4.3348, 4.3754,
    4.4424, 4.4602, 4.487, 4.554, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925,
    7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.793, 12.607, 13.477, 14.407, 15.401, 16.464,
    17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 28.616, 29.054, 29.171, 29.346,
    29.784, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493,
    62.529, 66.843, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27,
    139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11,
    310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_SN: [f32; 219] = [
    7.9989e-05, 0.00011133, 0.00015407, 0.00021202, 0.00029014, 0.00039485, 0.00053439, 0.00071929,
    0.00096289, 0.001282, 0.0016978, 0.0022363, 0.0027441, 0.0029169, 0.0029301, 0.0029642,
    10525.0, 12539.0, 20856.0, 44523.0, 78007.0, 1.1301e+05, 1.4015e+05, 1.5334e+05, 1.5194e+05,
    1.3942e+05, 1.2077e+05, 1.0035e+05, 81072.0, 64398.0, 50753.0, 39976.0, 31650.0, 25296.0,
    20474.0, 16819.0, 14040.0, 13139.0, 12658.0, 12536.0, 19059.0, 18236.0, 15178.0, 12907.0,
    11294.0, 10115.0, 9232.6, 8635.4, 8556.8, 8499.6, 8465.0, 9182.6, 9064.1, 8804.9, 8391.1,
    8042.2, 7734.3, 7451.2, 7180.7, 6914.3, 6645.4, 6370.3, 6086.7, 5794.0, 5492.9, 5184.9, 4872.6,
    4558.3, 4244.3, 3934.0, 3630.7, 3344.0, 3300.1, 3270.2, 3259.7, 3250.9, 18046.0, 17769.0,
    17620.0, 27307.0, 27156.0, 26300.0, 25277.0, 21884.0, 18996.0, 16512.0, 14346.0, 13035.0,
    12618.0, 12510.0, 14139.0, 14039.0, 13626.0, 13163.0, 12765.0, 12662.0, 13191.0, 13035.0,
    12813.0, 11429.0, 10160.0, 9972.4, 9846.3, 9764.9, 10081.0, 9782.1, 9093.8, 7934.4, 6818.6,
    5856.5, 5028.6, 4304.1, 3679.3, 3146.2, 2689.3, 2299.0, 1965.1, 1680.4, 1426.8, 1212.4, 1032.0,
    879.86, 751.35, 642.0, 540.81, 450.8, 376.49, 314.62, 302.33, 290.33, 287.24, 977.34, 931.62,
    896.71, 884.01, 842.55, 832.78, 1143.7, 1094.2, 1024.9, 997.92, 956.98, 946.56, 1076.9, 1036.8,
    992.31, 842.02, 714.32, 603.02, 507.68, 426.88, 358.93, 301.97, 254.24, 213.82, 179.4, 149.11,
    124.08, 103.37, 86.205, 71.983, 60.177, 50.332, 42.136, 35.323, 29.587, 24.751, 20.669, 17.25,
    14.418, 12.07, 10.119, 8.4169, 7.9817, 7.6514, 7.5665, 43.469, 41.774, 40.919, 34.275, 28.771,
    24.171, 20.274, 16.966, 14.195, 11.874, 9.9338, 8.3131, 6.9599, 5.8069, 4.849, 4.053, 3.3915,
    2.8375, 2.3698, 1.9826, 1.662, 1.3964, 1.1763, 0.99375, 0.84214, 0.71614, 0.61145, 0.52441,
    0.45194, 0.39154, 0.3411, 0.29893, 0.26358, 0.23389, 0.20889, 0.18775, 0.16982, 0.15456,
    0.1415, 0.13027, 0.12056, 0.11211, 0.10471,
];

const KEV_TA: [f32; 255] = [
    0.005586, 0.0056715, 0.0056943, 0.0057285, 0.005814, 0.01069, 0.011428, 0.012216, 0.013059,
    0.01396, 0.014923, 0.015953, 0.017054, 0.018231, 0.019488, 0.020833, 0.022271, 0.023807,
    0.0245, 0.024875, 0.024975, 0.025125, 0.02545, 0.0255, 0.027206, 0.029083, 0.03109, 0.033235,
    0.035528, 0.035672, 0.036218, 0.036364, 0.036582, 0.037128, 0.03798, 0.040601, 0.043402,
    0.044002, 0.044675, 0.044855, 0.045124, 0.045798, 0.046397, 0.049598, 0.05302, 0.056679,
    0.06059, 0.06477, 0.069239, 0.069678, 0.070745, 0.071029, 0.071456, 0.072522, 0.074017,
    0.079124, 0.084584, 0.09042, 0.096659, 0.10333, 0.11046, 0.11808, 0.12623, 0.13494, 0.14425,
    0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.22471, 0.22815, 0.22907, 0.23012,
    0.23045, 0.23389, 0.23647, 0.24009, 0.24106, 0.24251, 0.246, 0.24613, 0.26297, 0.28112,
    0.30051, 0.32125, 0.34341, 0.36711, 0.39244, 0.39641, 0.40248, 0.4041, 0.40652, 0.41259,
    0.41952, 0.44847, 0.4555, 0.46248, 0.46434, 0.46712, 0.4741, 0.47941, 0.51249, 0.54785,
    0.55419, 0.56267, 0.56493, 0.56833, 0.57681, 0.58565, 0.62606, 0.66926, 0.71544, 0.76481,
    0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933,
    1.7004, 1.7033, 1.7264, 1.7334, 1.7438, 1.7573, 1.7698, 1.7842, 1.7914, 1.8022, 1.8208, 1.8291,
    1.9464, 2.0807, 2.1501, 2.183, 2.1918, 2.205, 2.2243, 2.2379, 2.3778, 2.4193, 2.4564, 2.4662,
    2.481, 2.5181, 2.5418, 2.6538, 2.6945, 2.7053, 2.7172, 2.7215, 2.7622, 2.9047, 3.1052, 3.3194,
    3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925,
    7.9026, 8.4479, 9.0308, 9.6539, 9.6835, 9.8317, 9.8712, 9.9305, 10.079, 10.32, 10.913, 11.032,
    11.08, 11.125, 11.192, 11.359, 11.448, 11.623, 11.67, 11.74, 11.793, 11.915, 12.607, 13.477,
    14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014,
    32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.068,
    66.843, 67.079, 67.349, 67.753, 68.765, 71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64,
    113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48,
    253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_TA: [f32; 255] = [
    1.1072e-05, 1.2001e-05, 1.2259e-05, 47371.0, 46396.0, 55425.0, 58905.0, 61782.0, 63767.0,
    64634.0, 64246.0, 62577.0, 59707.0, 55814.0, 51143.0, 45972.0, 40582.0, 35215.0, 32961.0,
    31788.0, 31481.0, 37323.0, 36071.0, 35883.0, 30020.0, 24845.0, 20628.0, 17211.0, 14483.0,
    14338.0, 13811.0, 13677.0, 51572.0, 49299.0, 46036.0, 37794.0, 30936.0, 29681.0, 28358.0,
    28020.0, 42452.0, 40830.0, 39472.0, 33413.0, 28442.0, 24373.0, 21288.0, 19149.0, 17850.0,
    17766.0, 17588.0, 17547.0, 17668.0, 17550.0, 17436.0, 17407.0, 17804.0, 18508.0, 19411.0,
    20408.0, 21352.0, 22160.0, 22779.0, 23180.0, 23352.0, 23299.0, 23035.0, 22585.0, 21973.0,
    21233.0, 20394.0, 19816.0, 19606.0, 19550.0, 21024.0, 20997.0, 20708.0, 20496.0, 20205.0,
    20129.0, 21090.0, 20760.0, 20748.0, 19234.0, 17764.0, 16451.0, 15247.0, 14135.0, 13109.0,
    12163.0, 12027.0, 11825.0, 11772.0, 12486.0, 12289.0, 12072.0, 11244.0, 11061.0, 10884.0,
    10838.0, 10943.0, 10730.0, 10556.0, 9568.1, 8664.8, 8517.0, 8325.1, 8275.0, 8418.2, 8234.8,
    8050.1, 7280.0, 6570.6, 5916.0, 5312.9, 4757.7, 4248.5, 3784.1, 3362.5, 2884.8, 2479.5, 2136.4,
    1845.3, 1597.3, 1385.8, 1205.1, 1051.8, 1048.1, 1019.0, 1010.6, 17694.0, 12550.0, 9242.8,
    6583.6, 5600.8, 15424.0, 9775.9, 8251.4, 2634.1, 2423.1, 2479.3, 2517.0, 2527.4, 3039.9,
    3048.8, 3054.8, 2911.6, 2826.0, 2743.3, 2720.4, 2861.6, 2762.9, 2699.0, 2408.9, 2311.4, 2286.2,
    2356.5, 2346.5, 2254.3, 1970.1, 1666.9, 1416.5, 1202.5, 1015.1, 858.36, 727.29, 614.45, 519.39,
    438.66, 370.85, 313.91, 266.17, 226.05, 192.3, 163.33, 138.66, 117.52, 98.456, 97.651, 93.759,
    92.759, 246.83, 235.31, 218.05, 185.42, 179.91, 177.74, 175.79, 240.0, 230.59, 225.81, 216.83,
    214.54, 244.24, 241.49, 235.39, 204.59, 172.72, 145.56, 122.42, 102.88, 86.49, 72.761, 61.242,
    51.526, 43.374, 36.481, 30.707, 25.676, 21.442, 17.929, 15.012, 12.586, 10.565, 8.8817, 7.4661,
    6.2808, 5.282, 4.4341, 3.7285, 3.1397, 2.7288, 2.6494, 2.626, 2.5995, 11.521, 11.109, 10.101,
    8.5192, 7.1777, 6.0451, 5.0802, 4.272, 3.5958, 3.0298, 2.5557, 2.1586, 1.8231, 1.5396, 1.3026,
    1.1045, 0.93878, 0.80001, 0.68375, 0.58627, 0.50444, 0.4357, 0.37786, 0.32913, 0.28923,
    0.25541, 0.22655, 0.20189, 0.18074, 0.16256,
];

const KEV_W: [f32; 259] = [
    0.005978, 0.0060695, 0.0060939, 0.0061305, 0.006222, 0.01069, 0.011428, 0.012216, 0.013059,
    0.01396, 0.014923, 0.015953, 0.017054, 0.018231, 0.019488, 0.020833, 0.022271, 0.023807,
    0.02545, 0.027206, 0.029083, 0.03109, 0.032928, 0.033235, 0.033432, 0.033566, 0.033768,
    0.034272, 0.034888, 0.035422, 0.035528, 0.035564, 0.03577, 0.035778, 0.036318, 0.036464,
    0.036682, 0.03723, 0.03798, 0.040601, 0.043402, 0.045864, 0.046397, 0.046566, 0.046753,
    0.047034, 0.047736, 0.049598, 0.05302, 0.056679, 0.06059, 0.06477, 0.069239, 0.074017,
    0.075558, 0.076715, 0.077023, 0.077485, 0.078642, 0.079124, 0.084584, 0.09042, 0.096659,
    0.10333, 0.11046, 0.11808, 0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837,
    0.20137, 0.21527, 0.23012, 0.24049, 0.24417, 0.24515, 0.246, 0.24663, 0.25031, 0.25362,
    0.25751, 0.25854, 0.26009, 0.26297, 0.26398, 0.28112, 0.30051, 0.32125, 0.34341, 0.36711,
    0.39244, 0.41679, 0.41952, 0.42317, 0.42487, 0.42743, 0.43381, 0.44847, 0.47941, 0.48177,
    0.48914, 0.49111, 0.49406, 0.50143, 0.51249, 0.54785, 0.5831, 0.58565, 0.59203, 0.5944,
    0.59798, 0.6069, 0.62606, 0.66926, 0.71544, 0.76481, 0.81758, 0.87399, 0.93429, 0.99876,
    1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933, 1.7033, 1.773, 1.8002, 1.8074, 1.8182,
    1.8208, 1.8342, 1.8454, 1.8622, 1.8697, 1.881, 1.909, 1.9464, 2.0807, 2.2243, 2.2354, 2.2696,
    2.2787, 2.2924, 2.3266, 2.3778, 2.5234, 2.5418, 2.562, 2.5723, 2.5878, 2.6264, 2.7172, 2.7632,
    2.8055, 2.8168, 2.8337, 2.876, 2.9047, 3.1052, 3.3194, 3.5484, 3.7933, 4.055, 4.3348, 4.6339,
    4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.003,
    10.156, 10.197, 10.258, 10.32, 10.411, 11.032, 11.313, 11.486, 11.532, 11.602, 11.775, 11.793,
    11.858, 12.039, 12.088, 12.16, 12.342, 12.607, 13.477, 14.407, 15.401, 16.464, 17.6, 18.814,
    20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9,
    44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.843, 68.135, 69.177, 69.455, 69.873, 70.915,
    71.455, 76.386, 81.656, 87.291, 93.314, 99.752, 106.64, 113.99, 121.86, 130.27, 139.26, 148.86,
    159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39, 290.11, 310.13, 331.53,
    354.4, 378.86, 405.0, 432.95,
];

const MU_W: [f32; 259] = [
    1.6514e-05, 1.7873e-05, 1.825e-05, 47191.0, 46237.0, 60149.0, 66397.0, 72486.0, 77928.0,
    82236.0, 84987.0, 85881.0, 84786.0, 81755.0, 77013.0, 70918.0, 63904.0, 56419.0, 48864.0,
    41553.0, 34775.0, 28709.0, 24120.0, 23434.0, 23006.0, 22719.0, 25354.0, 24172.0, 22813.0,
    21707.0, 21494.0, 21422.0, 53789.0, 53753.0, 51413.0, 50802.0, 51821.0, 49573.0, 46708.0,
    38241.0, 30999.0, 25971.0, 25028.0, 24738.0, 24424.0, 36197.0, 34788.0, 31454.0, 26559.0,
    22375.0, 18932.0, 16286.0, 14416.0, 13255.0, 13025.0, 12892.0, 12862.0, 13002.0, 12920.0,
    12894.0, 12877.0, 13288.0, 14041.0, 15052.0, 16235.0, 17520.0, 18825.0, 20066.0, 21145.0,
    21971.0, 22487.0, 22688.0, 22585.0, 22209.0, 21600.0, 20803.0, 20196.0, 19974.0, 19915.0,
    20840.0, 20795.0, 20521.0, 20274.0, 19983.0, 19905.0, 20489.0, 20258.0, 20177.0, 18833.0,
    17435.0, 16099.0, 14829.0, 13633.0, 12518.0, 11581.0, 11484.0, 11356.0, 11297.0, 11981.0,
    11761.0, 11284.0, 10381.0, 10317.0, 10122.0, 10071.0, 10160.0, 9975.7, 9709.4, 8932.9, 8254.3,
    8208.3, 8095.2, 8053.7, 8195.9, 8042.5, 7727.4, 7012.5, 6309.5, 5643.5, 5035.5, 4482.3, 3981.7,
    3531.5, 3035.4, 2605.1, 2242.0, 1934.5, 1673.5, 1451.4, 1261.8, 1099.5, 1011.3, 979.97, 971.88,
    16462.0, 15464.0, 11203.0, 8618.4, 5911.9, 5039.8, 14015.0, 7598.2, 4069.3, 2348.9, 2334.8,
    2344.2, 2375.4, 2384.1, 2874.6, 2882.0, 2861.8, 2634.1, 2595.0, 2551.2, 2528.4, 2659.8, 2563.7,
    2341.8, 2238.2, 2147.7, 2124.3, 2181.7, 2096.9, 2042.2, 1726.0, 1467.3, 1247.4, 1056.5, 892.04,
    754.92, 639.56, 540.34, 456.66, 386.0, 326.52, 276.66, 234.81, 199.64, 169.96, 144.32, 122.28,
    102.53, 93.374, 89.669, 88.717, 234.78, 230.28, 223.89, 187.71, 174.87, 167.65, 165.8, 226.62,
    217.71, 216.79, 213.63, 205.1, 202.9, 231.0, 222.6, 211.12, 178.63, 150.64, 126.91, 106.71,
    89.718, 75.468, 63.534, 53.466, 45.023, 37.899, 31.9, 26.671, 22.27, 18.621, 15.589, 13.067,
    10.969, 9.2195, 7.757, 6.5249, 5.4934, 4.6175, 3.8819, 3.2685, 2.7569, 2.6266, 2.5279, 2.5025,
    10.964, 10.571, 10.376, 8.7689, 7.3878, 6.2249, 5.2412, 4.4076, 3.7099, 3.1258, 2.6366, 2.2268,
    1.8832, 1.5903, 1.3455, 1.1408, 0.96937, 0.82584, 0.70555, 0.60466, 0.51997, 0.44879, 0.38891,
    0.33845, 0.2965, 0.26163, 0.23188, 0.20643, 0.18463, 0.16588,
];

const KEV_PT: [f32; 264] = [
    0.0060029, 0.0060948, 0.0061193, 0.006156, 0.0062479, 0.0072911, 0.0074027, 0.0074325,
    0.0074771, 0.0075887, 0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953,
    0.017054, 0.018231, 0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083,
    0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.050666,
    0.051442, 0.051648, 0.051958, 0.052734, 0.05302, 0.056679, 0.06059, 0.063994, 0.06477,
    0.064974, 0.065235, 0.065627, 0.066606, 0.069239, 0.069678, 0.070745, 0.071029, 0.071456,
    0.072522, 0.072814, 0.073928, 0.074017, 0.074226, 0.074672, 0.075786, 0.079124, 0.084584,
    0.09042, 0.096659, 0.099666, 0.10119, 0.1016, 0.10221, 0.10333, 0.10373, 0.11046, 0.11808,
    0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246,
    0.26297, 0.28112, 0.30051, 0.30703, 0.31173, 0.31299, 0.31487, 0.31957, 0.32125, 0.32418,
    0.32915, 0.33047, 0.33245, 0.33742, 0.34341, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941,
    0.50862, 0.51249, 0.51641, 0.51848, 0.5216, 0.52938, 0.54785, 0.58565, 0.59702, 0.60615,
    0.60859, 0.61225, 0.62138, 0.62606, 0.66926, 0.70756, 0.71544, 0.71839, 0.72128, 0.72561,
    0.73644, 0.76481, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943,
    1.4905, 1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.111, 2.1195, 2.1322, 2.1579, 2.164, 2.1909,
    2.1997, 2.2129, 2.2243, 2.2459, 2.3778, 2.5418, 2.5925, 2.6322, 2.6428, 2.6586, 2.6983, 2.7172,
    2.9047, 2.966, 3.0114, 3.0235, 3.0416, 3.087, 3.1052, 3.2301, 3.2795, 3.2927, 3.3125, 3.3194,
    3.3619, 3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154,
    7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.332, 11.506, 11.552, 11.622, 11.793,
    11.795, 12.607, 13.007, 13.206, 13.259, 13.339, 13.477, 13.538, 13.602, 13.81, 13.866, 13.949,
    14.158, 14.407, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077,
    30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529,
    66.843, 71.455, 76.386, 76.827, 78.003, 78.316, 78.787, 79.963, 81.656, 87.291, 93.314, 99.752,
    106.64, 113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15,
    237.48, 253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_PT: [f32; 264] = [
    1.6617e-05, 1.7989e-05, 1.8369e-05, 40474.0, 39638.0, 33428.0, 33345.0, 33339.0, 60636.0,
    59765.0, 74256.0, 83433.0, 93785.0, 1.0484e+05, 1.1599e+05, 1.2654e+05, 1.3569e+05, 1.4268e+05,
    1.4685e+05, 1.4775e+05, 1.452e+05, 1.3935e+05, 1.3062e+05, 1.1965e+05, 1.0717e+05, 94012.0,
    80908.0, 68426.0, 57012.0, 46920.0, 38238.0, 30932.0, 24894.0, 19973.0, 18611.0, 17696.0,
    17462.0, 34762.0, 33023.0, 32410.0, 25731.0, 20414.0, 16878.0, 16187.0, 16013.0, 15792.0,
    21854.0, 20937.0, 18742.0, 18411.0, 17642.0, 17446.0, 19026.0, 18234.0, 18023.0, 17241.0,
    17181.0, 17039.0, 17927.0, 17148.0, 15026.0, 12274.0, 10177.0, 8631.6, 8083.8, 7847.0, 7788.1,
    7888.6, 7742.8, 7693.0, 7079.7, 6793.3, 6854.6, 7224.6, 7890.5, 8824.0, 9977.1, 11294.0,
    12701.0, 14109.0, 15426.0, 16562.0, 17438.0, 18000.0, 18221.0, 18088.0, 17966.0, 17858.0,
    17826.0, 18165.0, 18049.0, 18004.0, 17923.0, 17775.0, 17733.0, 17948.0, 17792.0, 17592.0,
    16712.0, 15679.0, 14559.0, 13404.0, 12254.0, 11263.0, 11140.0, 11016.0, 10951.0, 11541.0,
    11297.0, 10745.0, 9721.7, 9440.3, 9222.1, 9165.1, 9214.1, 9007.2, 8903.9, 8024.5, 7345.7,
    7216.5, 7168.9, 7122.8, 7213.9, 7045.5, 6631.0, 5949.8, 5329.5, 4763.6, 4251.2, 3728.6, 3267.9,
    2865.0, 2500.4, 2160.3, 1855.5, 1598.0, 1380.0, 1194.8, 1037.1, 902.31, 875.28, 867.92,
    11226.0, 6958.6, 6230.1, 3945.7, 3431.0, 9314.6, 7592.6, 5494.7, 2150.3, 1961.4, 1966.7,
    1973.4, 1975.1, 2353.6, 2343.4, 2337.0, 2117.3, 2008.2, 1930.0, 1910.2, 2005.9, 1930.7, 1901.7,
    1719.3, 1655.0, 1638.3, 1685.5, 1676.9, 1625.5, 1424.9, 1213.4, 1034.5, 880.33, 744.13, 629.47,
    533.46, 451.14, 382.08, 323.3, 273.84, 232.32, 197.45, 168.11, 142.93, 120.03, 100.73, 84.743,
    79.101, 76.07, 75.275, 190.52, 183.1, 183.03, 152.89, 140.51, 134.84, 133.38, 182.5, 177.5,
    175.35, 173.12, 166.16, 164.38, 186.94, 180.05, 172.27, 145.34, 122.51, 103.27, 86.941, 73.215,
    61.696, 52.028, 43.843, 36.978, 30.964, 25.846, 21.601, 18.074, 15.143, 12.704, 10.672, 8.9773,
    7.5616, 6.3736, 5.373, 4.5347, 3.8211, 3.2203, 2.7185, 2.2988, 2.266, 2.1819, 2.1603, 9.0422,
    8.7057, 8.2833, 7.0399, 5.9483, 4.9898, 4.1923, 3.5323, 2.9792, 2.5156, 2.1267, 1.8005, 1.526,
    1.2934, 1.0985, 0.93506, 0.79788, 0.6827, 0.5859, 0.50449, 0.43593, 0.37814, 0.32935, 0.28811,
    0.25407, 0.22546, 0.20093, 0.17985,
];

const KEV_AU: [f32; 265] = [
    0.0066545, 0.0067564, 0.0067835, 0.0068243, 0.0069261, 0.0081422, 0.0082668, 0.0083001,
    0.0083499, 0.0084746, 0.01069, 0.011428, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953,
    0.017054, 0.018231, 0.019488, 0.020833, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083,
    0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.052626,
    0.05302, 0.053431, 0.053646, 0.053969, 0.054774, 0.056679, 0.06059, 0.06477, 0.069239,
    0.070266, 0.071342, 0.071628, 0.072058, 0.073134, 0.074017, 0.079124, 0.081144, 0.082386,
    0.082717, 0.083214, 0.084456, 0.084584, 0.084672, 0.085968, 0.086314, 0.086832, 0.088128,
    0.09042, 0.096659, 0.10333, 0.10564, 0.10726, 0.10769, 0.10834, 0.10996, 0.11046, 0.11808,
    0.12623, 0.13494, 0.14425, 0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246,
    0.26297, 0.28112, 0.30051, 0.32125, 0.32722, 0.33223, 0.33357, 0.33557, 0.34058, 0.34341,
    0.34496, 0.35024, 0.35165, 0.35376, 0.35904, 0.36711, 0.39244, 0.41952, 0.44847, 0.47941,
    0.51249, 0.53449, 0.54267, 0.54485, 0.54785, 0.54813, 0.55631, 0.58565, 0.62606, 0.63083,
    0.64048, 0.64306, 0.64692, 0.65657, 0.66926, 0.71544, 0.74362, 0.75501, 0.75804, 0.76259,
    0.76481, 0.77398, 0.81758, 0.87399, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943,
    1.4905, 1.5933, 1.7033, 1.8208, 1.9464, 2.0807, 2.1616, 2.1947, 2.2035, 2.2167, 2.2243, 2.2453,
    2.2498, 2.2796, 2.2888, 2.3026, 2.3369, 2.3778, 2.5418, 2.6881, 2.7172, 2.7293, 2.7403, 2.7567,
    2.7979, 2.9047, 3.0848, 3.1052, 3.1321, 3.1447, 3.1635, 3.2108, 3.3194, 3.3564, 3.4078, 3.4215,
    3.442, 3.4934, 3.5484, 3.7933, 4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469,
    6.9154, 7.3925, 7.9026, 8.4479, 9.0308, 9.6539, 10.32, 11.032, 11.68, 11.793, 11.859, 11.907,
    11.978, 12.157, 12.607, 13.459, 13.477, 13.665, 13.72, 13.802, 14.008, 14.066, 14.281, 14.338,
    14.407, 14.425, 14.64, 15.401, 16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265,
    28.077, 30.014, 32.085, 34.299, 36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493,
    62.529, 66.843, 71.455, 76.386, 79.11, 80.321, 80.644, 81.129, 81.656, 82.339, 87.291, 93.314,
    99.752, 106.64, 113.99, 121.86, 130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82,
    222.15, 237.48, 253.87, 271.39, 290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_AU: [f32; 265] = [
    2.6831e-05, 2.9003e-05, 2.9604e-05, 42705.0, 41481.0, 32469.0, 32352.0, 32341.0, 57837.0,
    56718.0, 59861.0, 67392.0, 77054.0, 88504.0, 1.0129e+05, 1.1478e+05, 1.2818e+05, 1.4053e+05,
    1.5079e+05, 1.5801e+05, 1.6141e+05, 1.6058e+05, 1.5549e+05, 1.4655e+05, 1.3452e+05, 1.2034e+05,
    1.0507e+05, 89725.0, 75109.0, 61791.0, 50114.0, 40190.0, 31965.0, 25284.0, 20477.0, 19938.0,
    19396.0, 19120.0, 34412.0, 32653.0, 28930.0, 22850.0, 18036.0, 14260.0, 13546.0, 12851.0,
    12673.0, 17817.0, 17073.0, 16498.0, 13697.0, 12769.0, 12228.0, 12088.0, 13428.0, 12854.0,
    12797.0, 12757.0, 12191.0, 12044.0, 12810.0, 12253.0, 11335.0, 9286.9, 7774.4, 7376.1, 7130.0,
    7068.6, 7167.5, 6960.4, 6900.6, 6215.8, 5862.7, 5835.1, 6094.1, 6625.1, 7424.6, 8457.9, 9680.7,
    11031.0, 12427.0, 13777.0, 14982.0, 15957.0, 16634.0, 16976.0, 16968.0, 16906.0, 16837.0,
    16816.0, 17141.0, 17065.0, 17015.0, 16987.0, 16880.0, 16849.0, 17056.0, 16939.0, 16739.0,
    15988.0, 15057.0, 14012.0, 12911.0, 11800.0, 11110.0, 10865.0, 10800.0, 11381.0, 11373.0,
    11130.0, 10311.0, 9305.0, 9195.0, 8977.4, 8920.5, 8962.8, 8756.5, 8495.3, 7631.9, 7165.2,
    6988.3, 6942.2, 7024.3, 6991.2, 6856.1, 6264.2, 5604.0, 5005.7, 4463.8, 3908.2, 3419.3, 2991.9,
    2619.5, 2283.5, 1979.4, 1713.3, 1476.4, 1274.2, 1102.7, 956.72, 883.17, 855.43, 848.18, 9924.0,
    8698.3, 6106.7, 5670.8, 3574.8, 3133.9, 8477.2, 5123.2, 3206.7, 1948.1, 1910.0, 1910.8, 1911.0,
    1911.0, 2256.5, 2246.2, 2179.5, 1892.5, 1860.6, 1819.7, 1800.9, 1890.2, 1819.6, 1671.2, 1625.3,
    1564.7, 1549.1, 1593.5, 1537.1, 1479.9, 1259.0, 1073.2, 914.84, 776.2, 656.1, 555.61, 470.58,
    398.49, 337.7, 286.09, 242.6, 206.1, 175.41, 149.06, 125.39, 105.3, 88.517, 76.448, 74.595,
    73.547, 72.792, 183.24, 175.95, 159.3, 133.43, 132.96, 128.07, 126.69, 173.54, 166.76, 164.94,
    158.35, 156.65, 178.69, 178.14, 171.62, 151.0, 127.32, 107.35, 90.437, 76.16, 64.175, 54.116,
    45.639, 38.493, 32.267, 26.952, 22.522, 18.842, 15.783, 13.238, 11.117, 9.3493, 7.8732, 6.6388,
    5.5957, 4.7234, 3.987, 3.3597, 2.8356, 2.3973, 2.1966, 2.1146, 2.0927, 8.6614, 8.5221, 8.3462,
    7.2069, 6.0889, 5.1383, 4.3367, 3.6619, 3.0883, 2.6066, 2.2022, 1.863, 1.5784, 1.3393, 1.1375,
    0.96814, 0.82599, 0.70659, 0.60621, 0.52175, 0.4506, 0.39062, 0.33997, 0.29715, 0.26087,
    0.2301, 0.20391, 0.1816,
];

const KEV_PB: [f32; 274] = [
    0.0048134, 0.0048871, 0.0049068, 0.0049362, 0.0050099, 0.01069, 0.011428, 0.011457, 0.011632,
    0.011679, 0.011749, 0.011924, 0.012216, 0.013059, 0.01396, 0.014923, 0.015953, 0.017054,
    0.018231, 0.018816, 0.019104, 0.019181, 0.019296, 0.019488, 0.019584, 0.020833, 0.021364,
    0.021691, 0.021778, 0.021909, 0.022236, 0.022271, 0.023807, 0.02545, 0.027206, 0.029083,
    0.03109, 0.033235, 0.035528, 0.03798, 0.040601, 0.043402, 0.046397, 0.049598, 0.05302,
    0.056679, 0.06059, 0.06477, 0.069239, 0.074017, 0.079124, 0.08428, 0.084584, 0.08557, 0.085914,
    0.08643, 0.08772, 0.09042, 0.096659, 0.1027, 0.10333, 0.10428, 0.1047, 0.10532, 0.1069,
    0.11046, 0.11808, 0.12623, 0.13494, 0.13534, 0.13741, 0.13796, 0.13879, 0.14004, 0.14086,
    0.14219, 0.14276, 0.14361, 0.14425, 0.14435, 0.14576, 0.14656, 0.14715, 0.14804, 0.15025,
    0.1542, 0.16484, 0.17621, 0.18837, 0.20137, 0.21527, 0.23012, 0.246, 0.26297, 0.28112, 0.30051,
    0.32125, 0.34341, 0.36711, 0.39244, 0.40464, 0.41084, 0.41249, 0.41496, 0.41952, 0.42116,
    0.4265, 0.43302, 0.43476, 0.43738, 0.4439, 0.44847, 0.47941, 0.51249, 0.54785, 0.58565,
    0.62606, 0.63161, 0.64128, 0.64386, 0.64772, 0.65739, 0.66926, 0.71544, 0.74862, 0.76008,
    0.76314, 0.76481, 0.76772, 0.77918, 0.81758, 0.87399, 0.87573, 0.88913, 0.89271, 0.89807,
    0.91147, 0.93429, 0.99876, 1.0677, 1.1413, 1.2201, 1.3043, 1.3943, 1.4905, 1.5933, 1.7033,
    1.8208, 1.9464, 2.0807, 2.2243, 2.3778, 2.4343, 2.4716, 2.4815, 2.4964, 2.5339, 2.5418, 2.5727,
    2.583, 2.5985, 2.6373, 2.7172, 2.9047, 3.0051, 3.0511, 3.0633, 3.0817, 3.1052, 3.1277, 3.3194,
    3.4831, 3.5364, 3.5484, 3.5506, 3.572, 3.6253, 3.7737, 3.7933, 3.8314, 3.8468, 3.87, 3.9277,
    4.055, 4.3348, 4.6339, 4.9537, 5.2955, 5.6609, 6.0515, 6.469, 6.9154, 7.3925, 7.9026, 8.4479,
    9.0308, 9.6539, 10.32, 11.032, 11.793, 12.607, 12.774, 12.97, 13.022, 13.1, 13.296, 13.477,
    14.407, 14.896, 15.124, 15.185, 15.276, 15.401, 15.504, 15.544, 15.781, 15.845, 15.94, 16.178,
    16.464, 17.6, 18.814, 20.112, 21.5, 22.983, 24.569, 26.265, 28.077, 30.014, 32.085, 34.299,
    36.666, 39.195, 41.9, 44.791, 47.882, 51.185, 54.717, 58.493, 62.529, 66.843, 71.455, 76.386,
    81.656, 86.244, 87.291, 87.564, 87.916, 88.445, 89.765, 93.314, 99.752, 106.64, 113.99, 121.86,
    130.27, 139.26, 148.86, 159.14, 170.12, 181.85, 194.4, 207.82, 222.15, 237.48, 253.87, 271.39,
    290.11, 310.13, 331.53, 354.4, 378.86, 405.0, 432.95,
];

const MU_PB: [f32; 274] = [
    3.9317e-06, 4.2792e-06, 4.3757e-06, 1.1782e+05, 1.1421e+05, 25787.0, 22557.0, 22441.0, 21759.0,
    21582.0, 38679.0, 37273.0, 35086.0, 29667.0, 24757.0, 20394.0, 16685.0, 13619.0, 11122.0,
    10112.0, 9661.3, 9546.0, 23132.0, 23207.0, 23251.0, 24168.0, 24742.0, 25182.0, 25312.0,
    31797.0, 32783.0, 32892.0, 38692.0, 46736.0, 56937.0, 68839.0, 81576.0, 93901.0, 1.0437e+05,
    1.116e+05, 1.1462e+05, 1.1306e+05, 1.0721e+05, 97922.0, 86389.0, 73850.0, 61393.0, 49824.0,
    39629.0, 31017.0, 23985.0, 18677.0, 18411.0, 17576.0, 17295.0, 22049.0, 20771.0, 18381.0,
    14065.0, 11106.0, 10853.0, 10483.0, 10326.0, 12562.0, 11922.0, 10638.0, 8501.2, 6833.8, 5530.7,
    5480.0, 5229.3, 5165.4, 5529.2, 5411.1, 5337.1, 5223.2, 5176.2, 5428.3, 5386.1, 5379.1, 5291.3,
    5244.1, 5211.1, 5323.6, 5217.0, 5064.0, 4867.4, 4942.3, 5276.6, 5856.5, 6657.9, 7640.6, 8746.3,
    9899.8, 11015.0, 12009.0, 12801.0, 13338.0, 13590.0, 13555.0, 13445.0, 13370.0, 13348.0,
    13770.0, 13719.0, 13699.0, 13630.0, 13538.0, 13512.0, 13764.0, 13671.0, 13601.0, 13057.0,
    12361.0, 11549.0, 10664.0, 9747.1, 9626.1, 9418.6, 9364.1, 9859.4, 9654.1, 9409.2, 8515.4,
    7914.4, 7715.7, 7663.8, 7741.4, 7692.5, 7504.3, 6918.0, 6171.4, 6150.3, 5991.8, 5950.7, 6012.3,
    5863.1, 5622.6, 5026.3, 4354.4, 3775.8, 3280.4, 2856.6, 2491.4, 2178.1, 1907.7, 1667.1, 1446.5,
    1254.5, 1089.7, 948.22, 826.48, 787.76, 763.78, 757.57, 8497.4, 4814.5, 4295.0, 2834.3, 2491.6,
    7033.9, 4313.5, 2205.8, 1949.9, 1939.1, 1890.8, 1875.9, 2167.5, 2127.9, 2087.8, 1747.8, 1532.9,
    1473.9, 1461.1, 1458.8, 1537.1, 1478.6, 1333.4, 1316.3, 1284.0, 1271.3, 1308.2, 1262.5, 1169.4,
    996.75, 851.16, 725.71, 614.66, 519.83, 440.36, 373.04, 316.47, 268.79, 228.47, 194.26, 164.87,
    138.55, 116.66, 98.318, 82.779, 69.804, 67.505, 64.96, 64.306, 158.5, 152.41, 147.02, 122.93,
    112.36, 107.86, 106.7, 146.36, 143.22, 140.69, 139.74, 134.18, 132.74, 150.85, 145.33, 139.08,
    117.39, 99.005, 83.513, 70.404, 59.378, 50.116, 42.328, 35.499, 29.745, 24.907, 20.827, 17.435,
    14.615, 12.265, 10.306, 8.6715, 7.3059, 6.1638, 5.2015, 4.3923, 3.714, 3.1368, 2.6511, 2.2397,
    1.9461, 1.8872, 1.8721, 1.8532, 7.4685, 7.1972, 6.5313, 5.5237, 4.6666, 3.9428, 3.3329, 2.8161,
    2.3803, 2.014, 1.7063, 1.4478, 1.2307, 1.0476, 0.89365, 0.76416, 0.65519, 0.56339, 0.486,
    0.42068, 0.36548, 0.31877, 0.2792, 0.2456, 0.21702, 0.19265,
];

/// All 22 filter materials, ordered by atomic number.
pub const FILTER_MATERIALS: &[FilterMaterial] = &[
    FilterMaterial {
        z: 4,
        name: "Be",
        density: 1.848,
        kev: &KEV_BE,
        mu: &MU_BE,
    },
    FilterMaterial {
        z: 5,
        name: "B",
        density: 2.37,
        kev: &KEV_B,
        mu: &MU_B,
    },
    FilterMaterial {
        z: 6,
        name: "C",
        density: 1.7,
        kev: &KEV_C,
        mu: &MU_C,
    },
    FilterMaterial {
        z: 13,
        name: "Al",
        density: 2.699,
        kev: &KEV_AL,
        mu: &MU_AL,
    },
    FilterMaterial {
        z: 14,
        name: "Si",
        density: 2.33,
        kev: &KEV_SI,
        mu: &MU_SI,
    },
    FilterMaterial {
        z: 22,
        name: "Ti",
        density: 4.54,
        kev: &KEV_TI,
        mu: &MU_TI,
    },
    FilterMaterial {
        z: 24,
        name: "Cr",
        density: 7.18,
        kev: &KEV_CR,
        mu: &MU_CR,
    },
    FilterMaterial {
        z: 25,
        name: "Mn",
        density: 7.44,
        kev: &KEV_MN,
        mu: &MU_MN,
    },
    FilterMaterial {
        z: 26,
        name: "Fe",
        density: 7.874,
        kev: &KEV_FE,
        mu: &MU_FE,
    },
    FilterMaterial {
        z: 27,
        name: "Co",
        density: 8.9,
        kev: &KEV_CO,
        mu: &MU_CO,
    },
    FilterMaterial {
        z: 28,
        name: "Ni",
        density: 8.902,
        kev: &KEV_NI,
        mu: &MU_NI,
    },
    FilterMaterial {
        z: 29,
        name: "Cu",
        density: 8.96,
        kev: &KEV_CU,
        mu: &MU_CU,
    },
    FilterMaterial {
        z: 30,
        name: "Zn",
        density: 7.133,
        kev: &KEV_ZN,
        mu: &MU_ZN,
    },
    FilterMaterial {
        z: 32,
        name: "Ge",
        density: 5.323,
        kev: &KEV_GE,
        mu: &MU_GE,
    },
    FilterMaterial {
        z: 42,
        name: "Mo",
        density: 10.22,
        kev: &KEV_MO,
        mu: &MU_MO,
    },
    FilterMaterial {
        z: 47,
        name: "Ag",
        density: 10.5,
        kev: &KEV_AG,
        mu: &MU_AG,
    },
    FilterMaterial {
        z: 50,
        name: "Sn",
        density: 7.31,
        kev: &KEV_SN,
        mu: &MU_SN,
    },
    FilterMaterial {
        z: 73,
        name: "Ta",
        density: 16.65,
        kev: &KEV_TA,
        mu: &MU_TA,
    },
    FilterMaterial {
        z: 74,
        name: "W",
        density: 19.3,
        kev: &KEV_W,
        mu: &MU_W,
    },
    FilterMaterial {
        z: 78,
        name: "Pt",
        density: 21.45,
        kev: &KEV_PT,
        mu: &MU_PT,
    },
    FilterMaterial {
        z: 79,
        name: "Au",
        density: 19.32,
        kev: &KEV_AU,
        mu: &MU_AU,
    },
    FilterMaterial {
        z: 82,
        name: "Pb",
        density: 11.35,
        kev: &KEV_PB,
        mu: &MU_PB,
    },
];

/// Look up a filter material by element symbol (case-insensitive).
pub fn find_material(name: &str) -> Option<&'static FilterMaterial> {
    FILTER_MATERIALS
        .iter()
        .find(|m| m.name.eq_ignore_ascii_case(name))
}

/// Linearly interpolate the mass-attenuation coefficient at a given energy.
///
/// Returns `None` if `energy_kev` is outside the tabulated range.
pub fn interpolate_mu(mat: &FilterMaterial, energy_kev: f64) -> Option<f64> {
    let kev = mat.kev;
    let mu = mat.mu;
    let n = kev.len();
    if n == 0 {
        return None;
    }
    let e = energy_kev;
    let lo = kev[0] as f64;
    let hi = kev[n - 1] as f64;
    if e < lo || e > hi {
        return None;
    }
    // Binary search for the bracketing interval
    let mut low: usize = 0;
    let mut high: usize = n - 1;
    while high - low > 1 {
        let mid = (low + high) / 2;
        if (kev[mid] as f64) <= e {
            low = mid;
        } else {
            high = mid;
        }
    }
    let x0 = kev[low] as f64;
    let x1 = kev[high] as f64;
    let y0 = mu[low] as f64;
    let y1 = mu[high] as f64;
    if (x1 - x0).abs() < 1e-30 {
        return Some(y0);
    }
    let t = (e - x0) / (x1 - x0);
    Some(y0 + t * (y1 - y0))
}

/// Compute the X-ray transmission through a filter.
///
/// `thickness_cm` is the filter thickness in centimetres.
/// Returns `exp(-mu/rho * rho * thickness)`, or `None` if the energy is out of range.
pub fn transmission(mat: &FilterMaterial, energy_kev: f64, thickness_cm: f64) -> Option<f64> {
    let mu = interpolate_mu(mat, energy_kev)?;
    let rho = mat.density as f64;
    Some((-mu * rho * thickness_cm).exp())
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_find_cu() {
        let cu = find_material("Cu").expect("Cu should exist");
        assert_eq!(cu.z, 29);
        assert!((cu.density - 8.96).abs() < 0.01);
    }

    #[test]
    fn test_find_case_insensitive() {
        assert!(find_material("cu").is_some());
        assert!(find_material("CU").is_some());
        assert!(find_material("Cu").is_some());
    }

    #[test]
    fn test_find_nonexistent() {
        assert!(find_material("nonexistent").is_none());
        assert!(find_material("Xy").is_none());
    }

    #[test]
    fn test_all_22_elements() {
        assert_eq!(FILTER_MATERIALS.len(), 22);
    }

    #[test]
    fn test_interpolate_mu_cu_8kev() {
        let cu = find_material("Cu").unwrap();
        let mu = interpolate_mu(cu, 8.0).expect("8 keV is in range for Cu");
        // mu/rho for Cu at 8 keV should be around 52 cm^2/g (NIST reference)
        assert!(mu > 40.0 && mu < 70.0, "mu = {mu}");
    }

    #[test]
    fn test_interpolate_out_of_range() {
        let cu = find_material("Cu").unwrap();
        assert!(interpolate_mu(cu, 0.001).is_none());
        assert!(interpolate_mu(cu, 999.0).is_none());
    }

    #[test]
    fn test_transmission_cu() {
        let cu = find_material("Cu").unwrap();
        let t = transmission(cu, 10.0, 0.001).expect("10 keV in range");
        // Transmission should be between 0 and 1
        assert!(t > 0.0 && t < 1.0, "t = {t}");
    }

    #[test]
    fn test_transmission_zero_thickness() {
        let cu = find_material("Cu").unwrap();
        let t = transmission(cu, 10.0, 0.0).expect("10 keV in range");
        assert!(
            (t - 1.0).abs() < 1e-10,
            "zero thickness should give transmission 1.0"
        );
    }
}