-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsliderule-1.ps
2303 lines (2135 loc) · 76.2 KB
/
sliderule-1.ps
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
%!PS
%%BeginFeature: *PageSize Legal
legal
%%EndFeature
% Postscript Slide Rule engine
% Copyright Derek Pressnall 2011
% This file is being made available under the terms of the
% GNU GPL Version 3 license.
/definerules {
% To define a rule, specify a rule as follows:
% /rulename [ stator-size slide-size stator-size ] (scale list) definerule def
% where "/rulename" is what you want to name this rule,
% [ size size size ] contains the size of each of the rule parts (top
% stator, slide, bottom stator), and (scale list) is a list of scales
% from the definitions below. The format of the scale list is
% (stator scales [ slide scales ] stator scales). Special characters:
% A colon ":" flips the rule over to specify the other side's layout
% A pipe symbol "|" draws a solid line between the give nscales
% A "-" or "+" after a scale overrides the scale's default oriention
% ("+" is tick marks pointing up, and "-" is pointing down)
% A "^" symbol following a scale means not to do a line break. Useful
% if you have two partial scale definitions that need to appear on the same
% rule line.
% Some sample scales are listed below.
% Keuffel and Esser Log-Log Duplex Decitrig (4081)
/KE4081-3 [14 mm 13 mm 14 mm] (LL01 K A [ B | T ST S ] D L- LL1- : LL02 LL03 DF [ CF CIF | CI C ] D LL3- LL2-) definerule def
% Hemmi 266
/H266 [15 mm 15 mm 15 mm] (H266LL03 H266LL01^ LL02B LL2B- A [ B BI CI C ] D L- S T- : eeXl eeXc eeF eer1 eeP^ [ eer2^ eeQ eeLi eeCf eeCz ] eeL eeZ eeFo blank) definerule def
% Hemmi 266 ThinkGeek variant
/H266-TG [13 mm 22 mm 13 mm] (H266LL03 H266LL01^ LL02B LL2B- A [ B BI Sh1 Sh2 Th CI C ] D DI P L : eeXl eeXc eeF eer1 eeP^ [ eer2^ eeQ ST S | T- eeLi eeCf eeCz ] eeL eeZ eeFo blank) definerule def
H266-TG /titlegap .8 cm put
H266-TG /postA {
scalestart 29 mm sub curline 8.5 mm add moveto
5 mm 0 rlineto 0 -4 mm rlineto -5 mm 0 rlineto 0 4 mm rlineto
.2 setlinewidth stroke
scaleend 24 mm add curline 8.5 mm add moveto
5 mm 0 rlineto 0 -4 mm rlineto -5 mm 0 rlineto 0 4 mm rlineto
.2 setlinewidth stroke
scalestart 29 mm sub curline 43.5 mm add moveto
5 mm 0 rlineto 0 -4 mm rlineto -5 mm 0 rlineto 0 4 mm rlineto
.2 setlinewidth stroke
scaleend 24 mm add curline 43.5 mm add moveto
5 mm 0 rlineto 0 -4 mm rlineto -5 mm 0 rlineto 0 4 mm rlineto
.1 setlinewidth stroke
scalestart 33 mm sub curline moveto -15 mm 0 rlineto stroke
scalestart 33 mm sub curline 13 mm add moveto -15 mm 0 rlineto stroke
scalestart 33 mm sub curline 35 mm add moveto -15 mm 0 rlineto stroke
scalestart 33 mm sub curline 48 mm add moveto -15 mm 0 rlineto stroke
scaleend 33 mm add curline moveto 15 mm 0 rlineto stroke
scaleend 33 mm add curline 13 mm add moveto 15 mm 0 rlineto stroke
scaleend 33 mm add curline 35 mm add moveto 15 mm 0 rlineto stroke
scaleend 33 mm add curline 48 mm add moveto 15 mm 0 rlineto stroke
scalestart 33 mm sub curline moveto 0 -5 mm rlineto stroke
scalestart 33 mm sub curline 48 mm add moveto 0 5 mm rlineto stroke
scaleend 33 mm add curline moveto 0 -5 mm rlineto stroke
scaleend 33 mm add curline 48 mm add moveto 0 5 mm rlineto stroke
} put
H266-TG /postB H266-TG /postA get put
H266-TG /postA [ H266-TG /postA get
/exec load
{scalestart 85 mm add curline 46 mm add moveto NumFont1 LargeF 1.3 mul scalefont setfont ("ELECTRONICS") show
} /exec load ] cvx put
/ultralog [18.5 mm 37 mm 18.5 mm] (LL00 LL01 LL02 LL03 DF [ CF CIF | Sh1- Sh2- Ch- Th- | Ln L CI C ] D LL3- LL2- LL1- LL0- : Const R1 R2 | K A [ B | T- blank ST- S- | P H1 H2 | CI C ] D DI Q1- Q2- Q3-) definerule def
% Keuffel & Esser KeLon
% This definition tries to match the given rule exactly, so several
% scales are copied and tweaked here.
/KeLon
16 dict begin
/Ptick .34 cm def
/Stick .30 cm def
/Ttick .14 cm def
/Qtick .093 cm def
/LargeF 5.25 def
/MedF 3.75 def
/SmallF 2.75 def
scaledefs
/Constscale Constscale ddup begin
/titlegap .6 cm def
currentdict end def
/CFscale CFscale ddup begin
/formula {log 10 .5 exp log sub} def
/beginscale 3 def
/constants [
{10 .5 exp formula} NumFont1 SmallF (\20610) ticklength 0 get /Ntop-QtrTick scaleCvars
dup ddup dup begin
/cvalue {10 .5 exp 10 mul formula} def
] end def
% constants aload length 2 add array astore def
currentdict end def
/DFscale DFscale ddup begin
/formula {log 10 .5 exp log sub} def
/beginscale 3 def
/constants [
{10 .5 exp formula} NumFont1 SmallF (\20610) ticklength 0 get /Ntop-QtrTick scaleCvars
dup ddup dup begin
/cvalue {10 .5 exp 10 mul formula} def
] end def
% constants aload length 2 add array astore def
currentdict end def
/CIFscale CIFscale ddup begin
/beginscale 3 def
/formula {1 exch div 100 mul 10 .5 exp div log} def
/constants [
{10 .5 exp formula} SymFont1 MedF () ticklength 0 get /Ntop-HalfTick scaleCvars
dup ddup dup begin
/cvalue {10 .5 exp 10 mul formula} def
end
] def
% dup ddup dup begin
% /cvalue {10 .5 exp 10 mul formula} def
% end
% constants aload length 2 add array astore def
currentdict end def
/Cfrontscale Cscale ddup begin
/constants [] def
currentdict end def
/CIscale CIscale ddup begin
/constants [] def
currentdict end def
/DIscale DIscale ddup begin
/constants [] def
currentdict end def
/Dfrontscale Dscale ddup begin
/constants [] def
currentdict end def
/Cbackscale Cscale ddup begin
/constants [
{PI log} NumFont1 LargeF (\203) ticklength 0 get /Ntop-HalfTick scaleCvars
{PI 180 60 60 mul mul div 1000000 mul log} SymFont1 LargeF (\242\242) ticklength 0 get /Ntop-HalfTick scaleCvars
{PI 180 60 mul div 10000 mul log} SymFont1 LargeF (\242) ticklength 0 get /Ntop-HalfTick scaleCvars
{180 PI div 10 div log} NumFont1 SmallF (R) ticklength 0 get /Ntop-HalfTick scaleCvars
{2 PI mul log} NumFont1 SmallF (2\203) ticklength 0 get /Ntop-HalfTick scaleCvars
] def
currentdict end def
/Dbackscale Cbackscale ddup begin
/tickdir -1 def
/title (D) def
currentdict end def
% [ 19 mm 19 mm 19 mm ] (KE-LL03 KE-LL02 KE-LL01 KE-LL00 DF [ CF CIF | L CI Cfront ] Dfront KE-LL0- KE-LL1- KE-LL2- KE-LL3- : Const Sh1 Sh2 Th A [ B | KE-T KE-ST KE-S Cback ] Dback DI K- | R1 R2) definerule
[ 19 mm 19 mm 19 mm ] (KE-LL03 KE-LL02 KE-LL01 KE-LL00 DF [ CF CIF | L CI Cfront ] Dfront KE-LL0- KE-LL1- KE-LL2- KE-LL3- : Const R1 R2 K A [ B | KE-T KE-ST KE-S Cback ] Dback DI Th- | Sh2 Sh1 ) definerule
dup begin
/nodefaulttitleRIGHT true def
/titlegap 1 cm def
end
end def
KeLon /postA {
newpath
1 setlinewidth
scalestart 12.5 inch scalelen sub 2 div sub 5 mm add
curline 5 mm add
.25 mm 0 360 arc stroke
scalestart 12.5 inch scalelen sub 2 div sub 14.5 mm add
curline 14 mm add
.25 mm 0 360 arc stroke
scalestart 12.5 inch scalelen sub 2 div sub 14.5 mm add
curline 52 mm add
.25 mm 0 360 arc stroke
scalestart 12.5 inch scalelen sub 2 div sub 14 mm add
curline 43 mm add
.25 mm 0 360 arc stroke
scaleend 12.5 inch scalelen sub 2 div add 5 mm sub
curline 5 mm add
.25 mm 0 360 arc stroke
scaleend 12.5 inch scalelen sub 2 div add 14.5 mm sub
curline 14 mm add
.25 mm 0 360 arc stroke
scaleend 12.5 inch scalelen sub 2 div add 14.5 mm sub
curline 52 mm add
.25 mm 0 360 arc stroke
scaleend 12.5 inch scalelen sub 2 div add 14 mm sub
curline 43 mm add
.25 mm 0 360 arc stroke
} put
KeLon /postB {
newpath
1 setlinewidth
scalestart 12.5 inch scalelen sub 2 div sub 5 mm add
curline 57 mm add 5 mm sub
.25 mm 0 360 arc stroke
scalestart 12.5 inch scalelen sub 2 div sub 14.5 mm add
curline 57 mm add 14 mm sub
.25 mm 0 360 arc stroke
scalestart 12.5 inch scalelen sub 2 div sub 14.5 mm add
curline 57 mm add 52 mm sub
.25 mm 0 360 arc stroke
scalestart 12.5 inch scalelen sub 2 div sub 14 mm add
curline 57 mm add 43 mm sub
.25 mm 0 360 arc stroke
scaleend 12.5 inch scalelen sub 2 div add 5 mm sub
curline 57 mm add 5 mm sub
.25 mm 0 360 arc stroke
scaleend 12.5 inch scalelen sub 2 div add 14.5 mm sub
curline 57 mm add 14 mm sub
.25 mm 0 360 arc stroke
scaleend 12.5 inch scalelen sub 2 div add 14.5 mm sub
curline 57 mm add 52 mm sub
.25 mm 0 360 arc stroke
scaleend 12.5 inch scalelen sub 2 div add 14 mm sub
curline 57 mm add 43 mm sub
.25 mm 0 360 arc stroke
} put
% Going to modify some scales for this next rule
% Enclosing modifications in a new dict def so that these mods affect this
% rule definition only.
8 dict begin
/Cscale Cscale ddup begin
/constants [
{2 10 exp 10 3 exp div formula} NumFont1n SmallF () ticklength 0 get /Ntop-QtrTick scaleCvars
{2 20 exp 10 6 exp div formula} NumFont1n SmallF () ticklength 0 get /Ntop-QtrTick scaleCvars
{2 30 exp 10 9 exp div formula} NumFont1n SmallF () ticklength 0 get /Ntop-QtrTick scaleCvars
{PI formula} SymFont1 MedF (\160) ticklength 0 get /Ntop-HalfTick scaleCvars
] def
currentdict
end def
/Dscale Dscale ddup dup /constants Cscale /constants get put def
%/DSP-01 [16 mm 16 mm 13 mm] (LL1 | LL01- K A [ B ST S | T- C ] DI D L | Ln- : DFm LL02 | LL03- DF [ CF R1 | R2- CI C ] D P LL2 | LL3-) definerule
/DSP-01 [16 mm 16 mm 13 mm] (P DFm+ K A [ B ST S | T- CI ] D DI L | Ln- : LL01 LL02 LL03 DF [ CF CIF | CI C ] D LL3- LL2- LL1-) definerule
end def
% A circular rule
% Circular rules can have one of these formats:
% [ outside-size inside-size ] (front outside [ front middle ] : back outside [back middle ])
% --or--
% [ front-outside-size front-inside-size back-size ] (front outside [ front middle ] : back )
%/test-circular [ 12 mm 16 mm ] (K | A C [ D CI B L ] : LL3 LL2 C [ D S | T ST ] ) definerule def
%test-circular /circular 4 inch put %this makes it circular, 4 inches wide
/crosshair {
newpath
-2 mm 0 moveto
4 mm 0 rlineto
0 -2 mm moveto
0 4 mm rlineto
.1 setlinewidth
stroke
} def
/CR3 [ 3.5 mm 17.5 mm ] (blank [ D10.100 TIME | TIME2 blank PA ] : C10.100 [ CR3S blank blank L180 blank ]) definerule def
CR3 /circular 5 inch put
% Add cross hairs to side A
CR3 /postA {crosshair} put
CR3 /postB {
gsave
.2 setlinewidth
newpath
0 0 5 inch 28 mm sub 2 div 0 360 arc closepath clip
5 dict begin
/incr 5 inch 28 mm sub 16 div def
-7 1 7 {
/i exch def
newpath
i incr mul incr 8 mul moveto 0 -16 incr mul rlineto stroke
i 0 ne {
i incr mul 0 moveto
NumFont1 MedF 1.5 mul scalefont setfont
i abs 20 mul 20 string cvs dup stringwidth pop -2 div 1 rmoveto show
i incr mul 0 moveto
NumFont1 LargeF 1.5 mul scalefont setfont
i abs 10 mul 20 string cvs dup stringwidth pop -2 div -5 rmoveto show
} if
} for
-7 1 7 {
/i exch def
newpath
i incr mul incr 8 mul exch moveto -16 incr mul 0 rlineto stroke
i 0 ne {
0 i incr mul moveto
NumFont1 MedF 1.5 mul scalefont setfont
i abs 20 mul 20 string cvs dup stringwidth pop -1 mul .5 rmoveto
show
0 i incr mul moveto
NumFont1 LargeF 1.5 mul scalefont setfont
i abs 10 mul 20 string cvs 1 .5 rmoveto
show
} if
} for
end
grestore
} put
/CR3p [ 3.5 mm 14 mm ] (C10.100 [ blank blank blank CAS ] : blank [ blank blank L360 blank ]) definerule def
CR3p /circular 5 inch put
CR3p /postA {crosshair} put
CR3p /postB {
crosshair
5 dict begin
/incr 5 inch 28 mm sub 16 div def
.1 setlinewidth
1 1 8 {
/i exch def
newpath
0 0 i incr mul 0 360 arc stroke
} for
Green setrgbcolor
10 10 360 {
/i exch def
gsave
i rotate
i 30 mod 0 eq {
0 incr 2 div moveto
} {
0 incr moveto
} ifelse
0 5 inch 28 mm sub 2 div lineto stroke
grestore
} for
end
} put
/CR3comb [ 3.5 mm 17.5 mm ] (C10.100 [ D10.100 TIME | TIME2 CAS PA ] : C10.100 [ CR3S blank L360 L180 blank ]) definerule def
CR3comb /circular 5 inch put
CR3comb /postA {
CR3 /postA get exec
} put
CR3comb /postB {
CR3 /postB get exec
CR3p /postB get exec
} put
%%%%%
} def
/printrules {
% This section lists which scales you want to print.
% specify "fullcutlines" to print solid lines between the slide and stators,
% otherwise specify "partialcutlines" to pint short line segments on the
% left / right side as cutting guides.
% Or specify "nocutlines" to not have any cut lines at all.
%fullcutlines
% partialcutlines
nocutlines
% Now print out the rules
%H266 printrule
H266-TG printrule
%test-circular printrule
%CR3 printrule
%CR3p printrule
%CR3comb printrule
%DSP-01 printrule
%ultralog printrule
%/startoffset 2 mm def
%KeLon printrule
%KE4081-3 printrule
} def
/scaledefs {
% This is the long way of defining a scale -- here for example purposes.
% The rest of the scales either use a shorthand notation, or modify existing
% scales.
/Cscale 32 dict begin % Create a dictionary, name it, and use it.
% Some local definitions used below
/plabel 8 dict begin % Define primary scale label
/linterval 0 def % interval that this label applies to
/lformula {.5 add cvi} def % Run the current tick mark through this formula to produce a numerical value to print
/font NumFont1 def % Font for this label
/fontsize LargeF def % Font size
/position /Ntop load def % Font position (on top of tick mark)
currentdict
end def
/slabel 8 dict begin % Define secondary scale label
/linterval 1 def % interval that this label applies to
/lformula {1 sub 10 mul .5 add cvi} def % Run the current tick mark through this formula to produce a numerical value to print
/font NumFont1 def % Font for this label
/fontsize MedF def % Font size
/position /Nright load def % Font position (on top of tick mark)
currentdict
end def
/plabel10 plabel ddup dup begin
/linterval 0 def
/lformula {10 div .5 add cvi} def
end def
/slabel10 slabel ddup dup begin
/linterval 1 def
/lformula {10 sub .5 add cvi} def
end def
% Begin scale definitions
/title (C) def % Scale title
/tickdir 1 def % tick marks point up (-1 is down)
/beginscale 1 def % start scale at 1
/endscale 10 def % end scale at 10
/xfactor 100 def % factor to convert all values to whole numbers
/formula {log} def %formula for this scale
/ticklength gradsizes def
/subsections [ %Define scale sub-sections
4 dict dup begin
/beginsub 1 def %this section starts at 1
/intervals [ 1 .1 .05 .01 ] def % Primary marks at the 1's, secondary at the .1's, tetiary at the .05's, and quadary at the .01's
/labels [ {plabel} {slabel} ] def
end
4 dict dup begin
/beginsub 2 def
/intervals [ 1 .5 .1 .02 ] def
/labels [ {plabel} ] def
end
4 dict dup begin
/beginsub 4 def
/intervals [ 1 .5 .1 .05 ] def
/labels [ {plabel} ] def
end
4 dict dup begin
/beginsub 10 def
/intervals [ 10 1 .5 .1 ] def
/labels [ {plabel10} {slabel10}] def
end
4 dict dup begin
/beginsub 20 def
/intervals [ 10 5 1 .2 ] def
/labels [ {plabel10} ] def
end
4 dict dup begin
/beginsub 40 def
/intervals [ 10 5 1 .5 ] def
/labels [ {plabel10} ] def
end
] def
/constants [
{PI formula} SymFont1 MedF (\160) ticklength 0 get /Ntop-HalfTick scaleCvars
] def
currentdict
end def
% For the D scale, we'll dup the C scale and modify only a couple variables
%/Dscale Cscale ddup def Dscale begin
/Dscale Cscale ddup begin
/title (D) def
/tickdir -1 def
currentdict
end def
/DFmscale Cscale ddup def DFmscale begin
/title (DFm) def
/tickdir -1 def
/beginscale 4.35 def
/endscale 43.5 def
/formula {log e log 10 mul log sub} def
end
/CFscale Cscale ddup def CFscale begin
/title (CF) def
/tickdir -1 def
/beginscale 3.14 def
/endscale 32 def
/formula {log PI log sub} def
/constants [
{PI formula} SymFont1 MedF (\160) ticklength 0 get /Ntop-HalfTick scaleCvars
dup ddup dup begin
/cvalue {PI 10 mul formula} def
end
] def
end
/DFscale CFscale ddup def DFscale begin
/title (DF) def % Scale title
/tickdir 1 def % tick marks point up (-1 is down)
end
/CIscale Cscale ddup def CIscale begin
/title (CI) def
/formula {1 exch div 10 mul log} def
/labelcolor [Red] def
end
/DIscale CIscale ddup def DIscale begin
/title (DI) def
/tickdir -1 def
end
/CIFscale CFscale ddup def CIFscale begin
/title (CIF) def
/tickdir -1 def
/beginscale 3.14 def
/endscale 32 def
/formula {1 exch div 100 mul PI div log} def
/labelcolor [Red] def
end
/DIFscale CIFscale ddup def DIFscale begin
/title (DIF) def
/tickdir 1 def
end
% Cscale copy, representing 10 - 100
% first, replicate C scale, and assign it to C10.100scale
/C10.100scale Cscale ddup def
% Now replace plabel and slabel variables in replicated scale
C10.100scale dup /plabel get ddup dup /lformula {10 mul .5 add cvi} put
/plabel exch put
C10.100scale dup /slabel get ddup dup /lformula {10 mul .5 add cvi} put
dup /position {Ntop} put
/slabel exch put
/C100.1000scale Cscale ddup def
% Now replace plabel and slabel variables in replicated scale
C100.1000scale dup /plabel get ddup dup /lformula {100 mul .5 add cvi} put
/plabel exch put
C100.1000scale dup /slabel get ddup dup /lformula {100 mul .5 add cvi} put
dup /position {Ntop} put
/slabel exch put
C100.1000scale /formula {2.25 mul log} put
/CASscale 32 dict begin
() 1 80 1000 1 {22.74 mul 698.7 add 1000 div log} gradsizes scalevars
/plabel 0 {.5 add cvi} NumFont1 LargeF {Ntop} scaleLvars def
/subsections [
80 [ 20 10 null 2] [plabel] scaleSvars
300[ 100 50 null 10] [plabel] scaleSvars
] def
currentdict
end def
/TIMEscale 32 dict begin
() 1 60 600 1 {60 div log 6 log add} gradsizes scalevars
/plabel 0 {[ exch dup 60 div cvi dup 3 string cvs (:) 4 3 roll 4 3 roll 60 mul sub cvi dup 0 eq {pop (00) } { 3 string cvs} ifelse ] strcat} NumFont1 LargeF {Ntop} scaleLvars def
/plabeld 0 {1440 div .5 add cvi /lsuffix (d) def} NumFont1 LargeF {Ntop} scaleLvars def
/subsections [
60 [ 30 null null 10 ] [plabel] scaleSvars
240 [ 60 null 30 10 ] [plabel] scaleSvars
600 [ 60 null null 30 ] [plabel] scaleSvars
1200 [ 240 null null 60 ] [plabel] scaleSvars
2940 [ 1440 720 360 60 ] [plabeld] scaleSvars
] def
currentdict
end def
/TIME2scale TIMEscale ddup def
TIME2scale begin
/tickdir -1 def
/beginscale 600 def
/endscale 6000 def
end
% Now need a matching D10.100scale
/D10.100scale C10.100scale ddup begin
/title (D) def
/tickdir -1 def
currentdict
end def
/Sscale 32 dict dup 3 1 roll def begin
(S) 1 5.7 90 100 {sin 10 mul log} gradsizes scalevars
/ctitleoffset 10 def
/plabelR 0 {.5 add cvi} NumFontRi MedF /Nright load scaleLvars def
/plabelL 0 {90 exch sub .5 add cvi} NumFontLi MedF /Nleft load scaleLvars def
plabelL /labelcolor [Red] put
/subsections [
5.5 [ 1 .5 .1 .05 ] [ plabelL plabelR ] scaleSvars
10 [ 5 1 .5 .1 ] [ plabelL plabelR ] scaleSvars
20 [ 5 null 1 .5 ] [ plabelL plabelR ] scaleSvars
30 [ 10 5 1 .5 ] [ plabelL plabelR ] scaleSvars
60 [ 10 null 5 1 ] [ plabelL plabelR ] scaleSvars
80 [ 10 null null 5 ] [ ] scaleSvars
90 [ 10 null null null ] [ 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars ] scaleSvars
] def
end
/CR3Sscale 32 dict dup 3 1 roll def begin
() -1 6 90 1 {sin 10 mul log} gradsizes scalevars
/plabelS 0 {.5 add cvi /lsuffix (\207) def} NumFont1 MedF /Ntop load scaleLvars def
/plabelC 0 {90 exch sub .5 add cvi /lsuffix (\207) def} NumFont1 MedF /Ntop load scaleLvars def
/subsections [
6 [ 1 null null null ] [ plabelS ] scaleSvars
25 [ 5 null null 1 ] [ plabelS ] scaleSvars
45 [ 5 null null 1 ] [ plabelC ] scaleSvars
70 [ 10 null null 1 ] [ plabelC ] scaleSvars
80 [ 10 null null 5 ] [ plabelC ] scaleSvars
90 [ 10 null null 5 ] [ ] scaleSvars
] def
/constants [
[ 1 1.5 2 2.5 3 3.5 4 4.5 5 ] {
{1 sin 100 mul log} adup dup 0 3 index put cvx NumFont1 MedF 4 3 roll ticklength 0 get 1 add /NtopT scaleCvars
dup /csuffix (\207) put
} forall
] def
end
/Tscale 32 dict dup 3 1 roll def begin
(T) 1 5.7 45 100 {tan 10 mul log} gradsizes scalevars
/ctitleoffset 10 def
/plabelR 0 {.5 add cvi} NumFontRi MedF /Nright load scaleLvars def
/plabelL 0 {90 exch sub .5 add cvi} NumFontLi MedF /Nleft load scaleLvars def
plabelL /labelcolor [Red] put
/subsections [
5.5 [ 1 .5 .1 .05 ] [ plabelL plabelR ] scaleSvars
10 [ 5 1 .5 .1 ] [ plabelL plabelR ] scaleSvars
30 [ 5 null 1 .2 ] [ plabelL plabelR ] scaleSvars
45 [ 5 null null null ] [ 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars ] scaleSvars
] def
end
% The ST scale is for sin and tan of small angles. Since the angle in
% radians of small angles splits the difference, we use that for the ST scale.
/STscale 32 dict dup 3 1 roll def begin
(ST) 1 .57 5.70 100 { radians 100 mul log } gradsizes scalevars
/ctitleoffset 10 def
/subsections [
.55 [ .05 null .05 .01 ] [ 0 {} NumFont1 MedF /Ntop load scaleLvars ] scaleSvars
.6 [ .1 null .05 .01 ] [ 0 {} NumFont1 MedF /Ntop load scaleLvars ] scaleSvars
% 1 [ .5 null .1 .02] [ 0 {dup dup cvi sub abs .001 lt {cvi dup 1 eq {/lsuffix (\353) def} if} if} NumFont1 MedF /Ntop load scaleLvars ] scaleSvars
1 [ .5 null .1 .02] [ 0 {dup dup cvi sub abs .001 lt {cvi dup 1 eq {/lsuffix (\207) def} if} if} NumFont1 MedF /Ntop load scaleLvars ] scaleSvars
3 [ 1 .5 .1 .02] [ 0 {dup dup cvi sub abs .001 lt {cvi} if} NumFont1 MedF /Ntop load scaleLvars ] scaleSvars
] def
/constants [
{180 60 60 mul mul PI div 100000 div log} SymFont1 LargeF (\262) ticklength 1 get /Ntop-NoShow scaleCvars
{180 60 mul PI div 1000 div log} SymFont1 LargeF () ticklength 2 get /Ntop scaleCvars
{180 60 mul PI div 1000 div log} SymFont1 LargeF (\242) ticklength 1 get /Ntop-NoShow scaleCvars
% { 1 60 div sin 10000 mul log } SymFont1 SmallF () ticklength 2 get /Ntop scaleCvars
% { 1 60 div sin 10000 mul log } SymFont1 SmallF (\262) ticklength 0 get /Ntop-NoShow scaleCvars
% { 1 3600 div sin 1000000 mul log } SymFont1 SmallF (\242) ticklength 0 get /Ntop-NoShow scaleCvars
] def
end
/KE-Tscale Tscale ddup begin
/beginscale 5.5 def
currentdict end
def
/KE-Sscale Sscale ddup begin
/beginscale 5.5 def
currentdict end
def
/KE-STscale STscale ddup begin
/beginscale .55 def
/endscale 6 def
/title (SRT) def
% /constants [] def
currentdict end
def
/Ascale 32 dict dup 3 1 roll def begin
/plabel1 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel10 0 {10 div .5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel100 0 {100 div .5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
(A) 1 1 100 100 {log 2 div} gradsizes scalevars
/subsections [
1 [1 .5 .1 .02] [plabel1] scaleSvars
2 [1 .5 .1 .05] [plabel1] scaleSvars
5 [1 null .5 .1] [plabel1] scaleSvars
10 [10 5 1 .2] [plabel10] scaleSvars
20 [10 5 1 .5] [plabel10] scaleSvars
50 [10 null 5 1] [plabel10] scaleSvars
100 [100 50 10 2] [plabel100] scaleSvars
] def
/constants [
{PI formula} NumFont1 SmallF (\203) ticklength 0 get /Ntop-HalfTick scaleCvars
{PI 4 div 100 mul formula} NumFont1 SmallF .7 mul () ticklength 0 get /Nleft-HalfTick scaleCvars
] def
end
/Bscale Ascale ddup begin
/title (B) def
/tickdir -1 def
currentdict
end def
/AIscale Ascale ddup def AIscale begin
/title (AI) def
/formula {100 exch div log 2 div} def
/labelcolor [Red] def
end
/BIscale Bscale ddup def BIscale begin
/title (BI) def
/formula {100 exch div log 2 div} def
/labelcolor [Red] def
end
/Kscale 32 dict dup 3 1 roll def begin
/plabel1 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel10 0 {10 div .5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel100 0 {100 div .5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1000 0 {1000 div .5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
(K) 1 1 1000 100 {log 3 div} gradsizes scalevars
/subsections [
1 [1 .5 .1 .05] [plabel1] scaleSvars
3 [1 null .5 .1] [plabel1] scaleSvars
6 [1 null null .2] [plabel1] scaleSvars
10 [10 5 1 .5] [plabel10] scaleSvars
30 [10 null 5 1] [plabel10] scaleSvars
60 [10 null null 2] [plabel10] scaleSvars
100 [100 50 10 5] [plabel100] scaleSvars
300 [100 null 50 10] [plabel100] scaleSvars
600 [100 null null 20] [plabel100] scaleSvars
1000 [1000 500 100 50] [plabel1000] scaleSvars
] def
end
/Cscale20 32 dict dup 3 1 roll def begin
/plabel 0 {dup dup cvi sub abs .001 lt {.5 add cvi}if} NumFont1 LargeF /Ntop load scaleLvars def
/slabel 1 {dup cvi sub 10 mul .5 add cvi} NumFont1 MedF /Nright load scaleLvars def
/plabel10 0 {10 div .5 add cvi} NumFont1 LargeF /Ntop load scaleLvars def
(C) 1 1 10 1000 {log 2 mul} gradsizes5 scalevars
/subsections [
1 [ 1 .1 .05 .01 .005 ] [plabel slabel] scaleSvars
2 [ 1 .1 null .05 .01 ] [plabel slabel] scaleSvars
5 [ 1 .5 null .1 .02 ] [plabel] scaleSvars
10 [ 10 null null null ] [plabel10] scaleSvars
] def
end
/Cscale30 32 dict dup 3 1 roll def begin
/plabel 0 {dup dup cvi sub abs .001 lt {.5 add cvi}if} NumFont1 MedF /Ntop load scaleLvars def
/slabel 1 {dup cvi sub 10 mul .5 add cvi} NumFont1 SmallF /Nright load scaleLvars def
/plabel10 0 {10 div .5 add cvi} NumFont1 LargeF /Ntop load scaleLvars def
(C) 1 1 10 1000 {log 3 mul} gradsizes5 scalevars
/subsections [
1 [ 1 .1 .05 .01 .005 ] [plabel slabel] scaleSvars
2 [ 1 .1 null .05 .01 ] [plabel slabel] scaleSvars
5 [ 1 .5 null .1 .02 ] [plabel] scaleSvars
10 [ 10 null null null ] [plabel10] scaleSvars
] def
end
/eeXlscale 32 dict dup 3 1 roll def begin
/units1 [ (**) (1m\200) (*) (**) (1\200) (*) (**) (1K\200) (*) (**) (1M\200) (*) (**) ] def
/units2 [ () (m\201s) () () (\201s) () () (ms) () () (S) () (S) ] def
/plabel2 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1L 0 {log .5 add cvi curcycle 1 sub add units1 exch dup /curslabelnum exch def get }
NumFont1 MedF {curcycle 3 mod 2 eq { {Nleft} exec} {{Ntop} exec } ifelse} scaleLvars def
/plabel1R 0 {log .5 add cvi curcycle 1 sub add units2 exch dup /curslabelnum exch def get }
NumFont1 MedF {curcycle 3 mod 2 eq curslabelnum 12 eq or { {Nright} exec} {{NtopT} exec } ifelse} scaleLvars def
plabel1R /labelcolor [Red] put
[(XL)(TL)] 1 1 10 100 {.5 PI mul mul log 12 div curcycle 1 sub 1 12 div mul add} gradsizes scalevars
/cycles 12 def
/titlecolor [Green Red] def
/subsections [
1 [ 1 null .5 .1 ] [ plabel1L plabel1R ] scaleSvars
2 [ 1 null null .2 ] [ plabel2 ] scaleSvars
3 [ null null 1 .2 ] [ ] scaleSvars
5 [ 1 null null .5 ] [ plabel2 ] scaleSvars
6 [ null null 1 .5 ] [ ] scaleSvars
10 [ 1 null .5 .1 ] [ plabel1L ] scaleSvars
] def
end
/eeXcscale 32 dict dup 3 1 roll def begin
/units1 [ (**) (1m\200) (*) (**) (1\200) (*) (**) (1K\200) (*) (**) (1M\200) (*) (100M\200) ] def
/units2 [ null (m\201s) null null (\201s) null null (ms) null null (S) null (S) ] def
/plabel2 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1L 0 {log .5 add cvi curcycle 1 sub add units1 exch dup /curslabelnum exch def get }
NumFont1 MedF {curcycle 3 mod 2 eq curslabelnum 12 eq or { {Nleft} exec} {{Ntop} exec } ifelse} scaleLvars def
/plabel1R 0 {log .5 add cvi curcycle 1 sub add units2 exch dup /curslabelnum exch def get }
NumFont1 MedF {curcycle 3 mod 2 eq curslabelnum 12 eq or { {Nright} exec} {{Ntop} exec } ifelse} scaleLvars def
plabel1R /labelcolor [Red] put
[(Xc)(R,Tc)] -1 1 10 100 {10 exch div .5 PI mul mul log 12 div curcycle 1 12 div mul 1 exch sub add} gradsizes scalevars
/cycles 12 def
/titlecolor [Green Red] def
/subsections [
1 [ 1 null .5 .1 ] [ plabel1L plabel1R ] scaleSvars
2 [ 1 null null .2 ] [ plabel2 ] scaleSvars
3 [ null null 1 .2 ] [ ] scaleSvars
5 [ 1 null null .5 ] [ plabel2 ] scaleSvars
6 [ null null 1 .5 ] [ ] scaleSvars
10 [ 1 null .5 .1 ] [ plabel1L plabel1R ] scaleSvars
] def
end
/eeFscale 32 dict dup 3 1 roll def begin
/units1 [ (.001Hz) (*) (**) (1Hz) (*) (**) (1KHz) (*) (**) (1MHz) (*) (**) (1GHz) ] def
/plabel2 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1 0 {log .5 add cvi curcycle 1 sub add units1 exch get }
NumFont1 MedF {Ntop} scaleLvars def
[(F)(Fm)] 1 1 10 100 {log 12 div curcycle 1 sub 1 12 div mul add} gradsizes scalevars
/titlecolor [Green Red] def
/cycles 12 def
/subsections [
1 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
2 [ 1 null null .2 ] [ plabel2 ] scaleSvars
3 [ null null 1 .2 ] [ ] scaleSvars
5 [ 1 null null .5 ] [ plabel2 ] scaleSvars
6 [ null null 1 .5 ] [ ] scaleSvars
10 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
] def
end
/eeLscale 32 dict dup 3 1 roll def begin
/units1 [ (**) (.001\201H) (*) (**) (1\201H) (*) (**) (1mH) (*) (**) (1H) (*) (100H) ] def
/plabel2 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1 0 {log .5 add cvi curcycle 1 sub add units1 exch get }
NumFont1 MedF {Ntop} scaleLvars def
[(L)] -1 1 10 100 {log 12 div curcycle 1 sub 1 12 div mul add} gradsizes scalevars
/cycles 12 def
/subsections [
1 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
2 [ 1 null null .2 ] [ plabel2 ] scaleSvars
3 [ null null 1 .2 ] [ ] scaleSvars
5 [ 1 null null .5] [ plabel2 ] scaleSvars
6 [ null null 1 .5 ] [ ] scaleSvars
10 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
] def
end
/eeLiscale 32 dict dup 3 1 roll def begin
/units1 [ (**) (.001\201H) (*) (**) (1\201H) (*) (**) (1mH) (*) (**) (1H) (*) (100H) ] def
/plabel2 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1 0 {log .5 add cvi curcycle 1 sub add units1 exch get }
NumFont1 MedF {Ntop curcycle 3 mod 2 ne { /curticklen 1.5 tickdir mul +=} if} scaleLvars def
(L) 1 1 10 100 {10 exch div log 12 div 1 curcycle 1 12 div mul sub add} gradsizes scalevars
/titlecolor [Green Red] def
/cycles 12 def
/subsections [
1 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
2 [ 1 null null .2 ] [ plabel2 ] scaleSvars
3 [ null null 1 .2 ] [ ] scaleSvars
5 [ 1 null null .5] [ plabel2 ] scaleSvars
6 [ null null 1 .5 ] [ ] scaleSvars
10 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
] def
/constants [
{4.02 12 div} NumFont1 MedF (TL) ticklength 0 get /Nright-NoShow scaleCvars
dup /labelcolor [Red] put
{3.98 12 div} NumFont1 MedF (XL) ticklength 0 get /Nleft-NoShow scaleCvars
dup /labelcolor [Green] put
] def
end
/eer1scale 32 dict begin
/plabel1 0 {} NumFont1 LargeF {Ntop} scaleLvars def
/plabel2 0 {.5 add cvi} NumFont1 LargeF {Ntop curtick xfactor div lformula 50 eq { 1.5 0 rmoveto} if} scaleLvars def
[(r1)] 1 .5 50 1000 { 1 1 1 4 -1 roll div .5 mul sub sub .472 mul }
gradsizes scalevars
/labelcolor [Red] def
/subsections [
.5 [ .1 .05 .01 .005 ] [ plabel1 ] scaleSvars
.7 [ .1 .05 null .01 ] [ plabel1 ] scaleSvars
1 [ .5 null .1 .02 ] [ plabel1 ] scaleSvars
1.5 [ .5 null .1 .05 ] [ plabel1 ] scaleSvars
2 [ 1 .5 null .1 ] [ plabel2 ] scaleSvars
3 [ 3 1 null .2 ] [ plabel2 ] scaleSvars
5 [ 5 null null 1 ] [ plabel2 ] scaleSvars
10 [ 50 10 null 5 ] [ plabel2 ] scaleSvars
20 [ 50 null null 10 ] [ plabel2 ] scaleSvars
50 [ 50 null null null ] [ plabel2 ] scaleSvars
] def
/constants [
{0} NumFont1 LargeF (\204) ticklength 0 get /Ntop scaleCvars
] def
currentdict
end def
/eer2scale eer1scale ddup begin
/title [(r2)] def
/tickdir -1 def
currentdict
end def
/eePscale 32 dict begin
/plabel 0 {.5 add cvi} NumFont1 LargeF {Ntop } scaleLvars def
[null (P)] 1 0 14 100 { 2 exp 14 2 exp div .477 mul .523 add} gradsizes scalevars
/labelcolor [Green] def
/subsections [
0 [ 1 null null null ] [ plabel ] scaleSvars
1 [ 2 1 null .5 ] [ plabel ] scaleSvars
2 [ 2 null null .2 ] [ plabel ] scaleSvars
4 [ 1 null .5 .1 ] [ plabel ] scaleSvars
10 [ 1 .5 .1 .05 ] [ plabel ] scaleSvars
] def
currentdict
end def
/eeQscale eePscale ddup begin
/title [null (Q)] def
/tickdir -1 def
currentdict
end def
/eeZscale 32 dict dup 3 1 roll def begin
/units1 [ (\200) (K\200) (M\200) ] def
/units2 [ (\201\200) (m\200) (\200) ] def
/plabel 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
(Z) 1 1 10 100 {log 6 div curcycle 1 sub 1 6 div mul add} gradsizes scalevars
/plabel1 0 {10 curcycle 1 add 3 mod exp mul .5 add cvi}
NumFont1 MedF /Nleft load scaleLvars def
/plabel2 0 {pop units1 curcycle 1 add 3 div cvi get }
NumFont1 SmallF {Nright 0 SmallF .6 mul tickdir mul rmoveto} scaleLvars def
/plabel3 0 {pop units2 curcycle 1 add 3 div cvi get }
NumFont1 SmallF {Nright 0 SmallF -0.6 mul tickdir mul rmoveto} scaleLvars def
/cycles 6 def
/subsections [
1 [ 1 .5 .1 .05 ] [ plabel1 plabel2 plabel3] scaleSvars
2 [ 1 null .5 .1 ] [ plabel ] scaleSvars
5 [ 5 null 1 .2 ] [ plabel ] scaleSvars
10 [ 5 null 1 .2 ] [ plabel1 plabel2 plabel3 ] scaleSvars
] def
end
/eeCzscale 32 dict dup 3 1 roll def begin
/units1 [ (Z) (**) (1PF) (*) (**) (.001\201F) (*) (**) (1\201F) (*) (**) (1000\201F) (Z) ] def
/plabel2 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1 0 {log .5 add cvi curcycle 1 sub add units1 exch get }
NumFont1 MedF {curcycle 9 eq {Nleft} {Ntop} ifelse} scaleLvars def
[(Cz)(C)] 1 1 10 100 {log 12 div curcycle 1 sub 1 12 div mul add} gradsizes scalevars
/titlecolor [Black Red] def
/cycles 12 def
/subsections [
1 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
2 [ 1 null null .2 ] [ plabel2 ] scaleSvars
3 [ null null 1 .2 ] [ ] scaleSvars
5 [ 1 null null .5] [ plabel2 ] scaleSvars
6 [ null null 1 .5 ] [ ] scaleSvars
10 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
] def
/constants [
{8.02 12 div} NumFont1 MedF (TC/fm) ticklength 0 get /Nright-NoShow scaleCvars
dup /labelcolor [Red] put
{0} NumFont1 MedF (_) ticklength 0 get .75 add /Ntop-NoShow scaleCvars
{1} NumFont1 MedF (_) ticklength 0 get MedF sub .5 sub /Ntop-NoShow scaleCvars
] def
end
/eeCfscale 32 dict dup 3 1 roll def begin
/units1 [ (**) (1PF) (*) (**) (.001\201F) (*) (**) (1\201F) (*) (**) (1000\201F) (*) ] def
/plabel2 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1 0 {log .5 add cvi curcycle 1 sub add units1 exch get }
NumFont1 MedF {curcycle 8 eq {Nleft} {Ntop} ifelse} scaleLvars def
[(Cf/C)] -1 1 10 100 {3.94784212 mul 100 exch div log 12 div curcycle 1 add 1 12 div mul 1 exch sub add} gradsizes scalevars
/cycles 11 def
/subsections [
1 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
2 [ 1 null null .2 ] [ plabel2 ] scaleSvars
3 [ null null 1 .2 ] [ ] scaleSvars
5 [ 1 null null .5] [ plabel2 ] scaleSvars
6 [ null null 1 .5 ] [ ] scaleSvars
10 [ 1 null .5 .1 ] [ plabel1 ] scaleSvars
] def
/constants [
{5.02 12 div 3.94784212 log 12 div sub } NumFont1 MedF (XC) ticklength 0 get /Nright-NoShow scaleCvars
dup /labelcolor [Green] put
{0} NumFont1 MedF () ticklength 0 get MedF sub 2 sub /Ntop scaleCvars
{-.001} NumFont1 MedF (f) ticklength 0 get 2 sub /Ntop-NoShow scaleCvars
{.001} NumFont1 MedF (\207) ticklength 0 get 2 sub /Ntop-NoShow scaleCvars
{0} NumFont1 MedF (_) ticklength 0 get 1 sub /Ntop-NoShow scaleCvars
{1} NumFont1 MedF () ticklength 0 get MedF sub 2 sub /Ntop scaleCvars
{.999} NumFont1 MedF (f) ticklength 0 get 2 sub /Ntop-NoShow scaleCvars
{1.001} NumFont1 MedF (\207) ticklength 0 get 2 sub /Ntop-NoShow scaleCvars
{1} NumFont1 MedF (_) ticklength 0 get MedF sub 2.5 sub /Ntop-NoShow scaleCvars
] def
end
/eeFoscale 32 dict dup 3 1 roll def begin
/units1 [ (KHz) (MHz) (GHz) ] def
/units2 [ (Hz) (Hz) (KHz) ] def
/units3 [ (3000m) (300m) (30m) (3m) (30cm) (3cm) (3mm)] def
/plabel 0 {.5 add cvi} NumFont1 MedF /Ntop load scaleLvars def
/plabel1 0 {10 curcycle 1 add 3 mod exp mul .5 add cvi}
NumFont1 MedF /Nleft load scaleLvars def
/plabel2 0 {pop units1 curcycle 1 add 3 div cvi get }
NumFont1 SmallF {Nright 0 SmallF -0.6 mul tickdir mul rmoveto} scaleLvars def
/plabel3 0 {pop units2 curcycle 1 add 3 div cvi get }
NumFont1 SmallF {Nright 0 SmallF 0.6 mul tickdir mul rmoveto} scaleLvars def
/plabel1c1L 0 {pop 10 curcycle 1 add 3 mod exp .5 add cvi}
NumFont1 SmallF {Nleft 0 SmallF -0.6 mul tickdir mul rmoveto} scaleLvars def
/plabel2c1L 0 {pop 10 curcycle 1 add 3 mod exp 1000 div}
NumFont1 SmallF {Nleft 0 SmallF 0.6 mul tickdir mul rmoveto} scaleLvars def
/plabel4 0 {log .5 add cvi curcycle 1 sub add units3 exch get }
NumFont1 MedF {NtopT 0 -2 rmoveto} scaleLvars def