%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb6l00XX.PS 20241001
%%BoundingBox: 14 08 828 584

/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: http://farbe.li.tu-berlin.de/hgb6/hgb6.htm)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark
[ /View [ /FitB ]
/DOCVIEW pdfmark
%Y10M00na.ps6

%line 20******************************************************
%BEG hgb6/OUTLIN10.PS Emty 20210418

%END hgb6/OUTLIN10.PS Emty 20210418
                                                                         
%BEG hgb6/OUTLIN1X.PS 20210418
%EMPTY
%END hgb6/OUTLIN1X.PS 20210418
                                                                         
%BEG hgb6/OUTLIN1Y2.PS Emty 20210418

%END hgb6/OUTLIN1Y2.PS Emty 20210418
                                                                         
/BeginEPSF {% def               % Prepare for EPS file
/b4_Inc_state save def          % Save state for cleanup
/dict_count countdictstack def
/op_count count 1 sub def       % Count objects on op stack
userdict begin                  % Make userdict current dict
/showpage {} def
0 setgray 0 setlinecap
1 setlinewidth 0 setlinejoin
10 setmiterlimit [] 0 setdash newpath
/languagelevel where            % If level not equal to 1 then
 {pop languagelevel where       % If level not equal to 1 then
 1 ne
 {false setstrokeadjust false setoverprint
 } if
} if
} bind def

/EndEPSF  {% def              % End for EPS file
 count op_count sub {pop} repeat
 countdictstack dict_count sub {end} repeat	% Clean up dict stack
 b4_Inc_state restore
} bind def

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def
/languagelevel where {pop languagelevel} {1} ifelse
                     /PSL12 exch def
/dictende {counttomark 2 idiv dup dict begin {def}
           repeat pop currentdict end} bind def

% !AUSTAUSCH Times-Roman -> Times-Roman-ISOLatin1=Times-I
 
/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
 
/Times-ISOL1 exch definefont pop
 
/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
 
/TimesI-ISOL1 exch definefont pop
 
/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
 
/TimesB-ISOL1 exch definefont pop
 
/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
 
/TimesBI-ISOL1 exch definefont pop
 
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def
 
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def
 
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def
 
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def
 
%ANFA CMYKDEF
%CMYKDEA0 (A0=Standard-Drucker-CMYKDEF) 15.3.97
/tzac [1.000 0.933 0.867 0.800 0.733 0.667 0.600 0.533
       0.467 0.400 0.333 0.267 0.200 0.132 0.067 0.000
       1.000 0.750 0.500 0.250 0.000] def
/tzam [1.000 0.933 0.867 0.800 0.733 0.667 0.600 0.533
       0.467 0.400 0.333 0.267 0.200 0.132 0.067 0.000
       1.000 0.750 0.500 0.250 0.000] def
/tzay [1.000 0.933 0.867 0.800 0.733 0.667 0.600 0.533
       0.467 0.400 0.333 0.267 0.200 0.132 0.067 0.000
       1.000 0.750 0.500 0.250 0.000] def
/tzan [1.000 0.933 0.867 0.800 0.733 0.667 0.600 0.533
       0.467 0.400 0.333 0.267 0.200 0.132 0.067 0.000
       1.000 0.750 0.500 0.250 0.000] def
/tza0 [0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
       0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
       0.000 0.000 0.000 0.000 0.000] def
/tza1 [1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
       1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
       1.000 1.000 1.000 1.000 1.000] def
%ENDE CMYKD
 
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def
 
/colrecfiLAB* %x y width heigth LAB*
  { setcolor rec fill} bind def

/colrecstLAB* %x y width heigth LAB*
  { setcolor rec stroke} bind def

/colrecficmyn* %x y width heigth cmy0* or 000n*
  { setcmykcolor rec fill} bind def
 
/colrecstcmyn* %x y width heigth cmy0* or 000n*
  { setcmykcolor rec stroke} bind def

/colrecfiw* %x y width heigth w*
  { setgray rec fill} bind def

/colrecstw* %x y width heigth w*
  { setgray rec stroke} bind def

/colrecfiolv* %x y width heigth olv*
  { setrgbcolor rec fill} bind def

/colrecstolv* %x y width heigth olv*
  { setrgbcolor rec stroke} bind def
 
/tzocmy0* {0.0 1.0 1.0 0.0} bind def %Reproduction colours
/tzlcmy0* {1.0 0.0 1.0 0.0} bind def %cmyn* setcmykcolor
/tzvcmy0* {1.0 1.0 0.0 0.0} bind def
/tzccmy0* {1.0 0.0 0.0 0.0} bind def
/tzmcmy0* {0.0 1.0 0.0 0.0} bind def
/tzycmy0* {0.0 0.0 1.0 0.0} bind def

/tzoolv* {1.0 0.0 0.0} bind def %Reproduction colours
/tzlolv* {0.0 1.0 0.0} bind def %olv* setrgbcolor
/tzvolv* {0.0 0.0 1.0} bind def
/tzcolv* {0.0 1.0 1.0} bind def
/tzmolv* {1.0 0.0 1.0} bind def
/tzyolv* {1.0 1.0 0.0} bind def
 
/tzoLAB* [53.34  72.46  50.66] def %Reproduction colours
/tzlLAB* [84.93 -79.83  74.80] def %LAB* setcolor
/tzvLAB* [32.20  24.88 -37.89] def
/tzcLAB* [88.10 -44.88 -13.36] def
/tzmLAB* [59.66  90.32 -19.65] def
/tzyLAB* [93.76 -20.24  85.93] def

/tzncmy0* {1.00 1.00 1.00 0.00} bind def %grey series
/tzdcmy0* {0.75 0.75 0.75 0.00} bind def %cmy0* setcmykcolor
/tzzcmy0* {0.50 0.50 0.50 0.00} bind def
/tzhcmy0* {0.25 0.25 0.25 0.00} bind def
/tzwcmy0* {0.00 0.00 0.00 0.00} bind def
 
/tzn000n* {0.00 0.00 0.00 1.00} bind def %grey series 000n*
/tzd000n* {0.00 0.00 0.00 0.75} bind def %000n* setcmykcolor
/tzz000n* {0.00 0.00 0.00 0.50} bind def
/tzh000n* {0.00 0.00 0.00 0.25} bind def
/tzw000n* {0.00 0.00 0.00 0.00} bind def

/tznw* {0.00} bind def %grey series
/tzdw* {0.25} bind def %w* setgray
/tzzw* {0.50} bind def
/tzhw* {0.75} bind def
/tzww* {1.00} bind def

/tznolv* {0.00 0.00 0.00} bind def %grey series
/tzdolv* {0.25 0.25 0.25} bind def %olv* setrgbcolor
/tzzolv* {0.50 0.50 0.50} bind def
/tzholv* {0.75 0.75 0.75} bind def
/tzwolv* {1.00 1.00 1.00} bind def

/tznLAB* [18.01 0.00 0.00] def %grey series
/tzdLAB* [37.36 0.00 0.00] def %LAB* setcolor
/tzzLAB* [56.71 0.00 0.00] def
/tzhLAB* [76.06 0.00 0.00] def
/tzwLAB* [95.41 0.00 0.00] def

/tfn {0 setgray} bind def /tfw {1 setgray} bind def
/tfb {0 0.5 1 setrgbcolor} bind def
 
/A4quer {598 0 translate 90 rotate} def
/cvishow {cvi 6 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 7 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 7 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 7 string cvs show} def

%%EndProlog

%***********************************************************
%%BeginPageSetup
/#copies 1 def
%A4querF
1.0 1.0 scale
/pgsave save def
%%EndPageSetup

/SS$ [(g) (e) (s) (f) (i) (j) (m)] def
/SC$ [(n) (f) (s) (d) (t) (e) (c)] def
/SX$ [(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (a) (b) (c) (d) (e) (f)] def
/SY$ [(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (a) (b) (c) (d) (e) (f)] def
%       0           1            2            3            4            5
%       6           7            8
/EX$ [(a.txt /.ps) (b.bmp /.ps) (g.gif /.ps) (h.htm /.ps) (i.htm /.ps)
      (j.jpe /.ps) (p.pdf /.ps) (t.tif /.ps)] def
/EY$ [(a.dat) (b.dat) (g.dat) (h.dat) (i.dat) (j.dat)
      (p.dat) (t.dat)] def

%*******************************************************************
/lanind1f 00 def /lanind2f 00 def /laninddf 01 def /lanindmf 01 def
/colorm1f 00 def /colorm2f 00 def /colormdf 01 def /colormmf 01 def
/deintp1f 00 def /deintp2f 00 def /deintpdf 01 def /deintpmf 01 def
/xcolor1f 00 def /xcolor2f 00 def /xcolordf 01 def /xcolormf 01 def %2/10degree
/xchart1f 00 def /xchart2f 00 def /xchartdf 01 def /xchartmf 01 def
/xchart3f 01 def /xchart4f 00 def /xchart5f 00 def
/pchart1f 00 def /pchart2f 00 def /pchartdf 01 def /pchartmf 01 def %=3:sRGB,Lr
/colsep1f 00 def /colsep2f 00 def /colsepdf 01 def /colsepmf 01 def
/pmetam1f 00 def /pmetam2f 00 def /pmetamdf 01 def /pmetammf 01 def
%/lanindf lanind1f def %
/lanindf lanind1f def %lanind1f laninddf lanind2f {/lanindf exch def

%/colormf colorm1f def %
/colormf colorm1f def %colorm1f colormdf colorm2f {/colormf exch def

%/deintpf deintp1f def %
/deintpf deintp1f def %deintp1f deintpdf deintp2f {/deintpf exch def

%/xcolorf xcolor1f def %
/xcolorf xcolor1f def %xcolor1f xcolordf xcolor2f {/xcolorf exch def

%/xchartf xchart1f def %
/xchartf xchart1f def %xchart1f xchartdf xchart2f {/xchartf exch def

%/pchartf pchart1f def %
/pchartf pchart1f def %/pchartf pchart1f def %pchart1f pchartdf pchart2f {/pchartf exch def

%/colsepf colsep1f def %
/colsepf colsep1f def %colsep1f colsepdf colsep2f {/colsepf exch def

/lanind lanindf def
/colorm colormf def
/deintp deintpf def
/xcolor xcolorf def
/xchart xchartf def   /xchartm xchart2f xchart1f sub 1 add def
/xchart3 xchart3f def /xchart4 xchart4f def
/pchart pchartf def
/colsep colsepf def

%/pmetamf pmetam1f def %
/pmetamf pmetam1f def %pmetam1f pmetamdf pmetam2f {/pmetamf exch def

/pmetam pmetamf def

%*************************************************************
%/setgray {sfgray} bind def
%/setrgbcolor {sfrgbcolor} bind def
%/setcmykcolor {sfcmykcolor} bind def

%72 90 translate

%0.01 MM dup scale
%0 0 moveto 24600 0 rlineto 0 17220 rlineto
%          -24600 0 rlineto closepath stroke
%000 -240 moveto
%240 /Times-ISOL1 FS
%lanindf cvishow (-) show
%colormf cvishow
%deintpf cvishow
%xcolorf cvishow
%xchartf cvishow
%pchartf cvishow
%colsepf cvishow (-F) show pmetamf cvishow

%grestore
gsave

/GSS$ SS$ lanind get def
/GSC$ SC$ colorm get def
/GSX$ SX$ xcolor xcolor 16 idiv 16 mul sub get def
/GSY$ SY$ xchart xchart 16 idiv 16 mul sub get def
/GEX$ EX$ 0 get def
/GEY$ EY$ 0 get def

%01
%02
%03
%04
%05
%06
%07
%08
%09
%10
%11
%12
%13
%14
%15
%16
%17
%18

%gsave
BeginEPSF
 28 MM 197 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 10

%line 329

%%EndDocument
EndEPSF grestore gsave
/SHSl 2 def /SHAl 2 def
BeginEPSF
 28 SHSl sub MM  152 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 11

%line 339
%!PS-Adobe-3.0 EPSF-3.0 hgb60-1N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb60-1N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
 86 SHAl add MM 152 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 12

%line 349
%!PS-Adobe-3.0 EPSF-3.0 hgb60-2N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb60-2N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
 28 SHSl sub MM 108 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 13

%line 359
%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-3n
%%BoundingBox: 70 85 395 335

%START PDFDE011.EPS
/pdfmark03 where {pop} {userdict /pdfmark03 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark03
[ /View [ /Fit ]
/DOCVIEW pdfmark03
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 0 def %0:left page, 1:right page
/pchartl 0 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 1 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-3n) show}
             {(hgb61-3n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
kx1 kxd kx2 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
xchartl 1 add cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
  xchartl    0 eq {  100 neg 13000 neg translate} if
  xchartl    1 eq { 5700 neg 13000 neg translate} if
  xchartl    2 eq {  100 neg 08750 neg translate} if
  xchartl    3 eq { 5700 neg 08750 neg translate} if

  xchartl    4 eq {  100 neg  4500 neg translate} if
  xchartl    5 eq { 5700 neg  4500 neg translate} if
  xchartl    6 eq {  100 neg  0250 neg translate} if
  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
 86 SHAl add MM 108 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 14

%line 369
%!PS-Adobe-3.0 EPSF-3.0 hgb60-4N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb60-4N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
 28 SHSl sub MM 064 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 15

%line 379
%!PS-Adobe-3.0 EPSF-3.0 hgb60-5N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb60-5N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
 86 SHAl add MM 064 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 16

%line 389
%!PS-Adobe-3.0 EPSF-3.0 hgb60-6N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb60-6N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave
BeginEPSF
 /xc1 16 def /yc1 12 def /xt 1 def xchart 1 eq {/xt 1 def} if
 28 SHSl sub MM 20 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 17

%line 399
%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-7n
%%BoundingBox: 70 85 395 335

%START PDFDE011.EPS
/pdfmark07 where {pop} {userdict /pdfmark07 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark07
[ /View [ /Fit ]
/DOCVIEW pdfmark07
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 0 def %0:left page, 1:right page
/pchartl 1 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 1 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-7n) show}
             {(hgb61-7n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
kx1 kxd kx2 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
xchartl 1 add cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
  xchartl    0 eq {  100 neg 13000 neg translate} if
  xchartl    1 eq { 5700 neg 13000 neg translate} if
  xchartl    2 eq {  100 neg 08750 neg translate} if
  xchartl    3 eq { 5700 neg 08750 neg translate} if

  xchartl    4 eq {  100 neg  4500 neg translate} if
  xchartl    5 eq { 5700 neg  4500 neg translate} if
  xchartl    6 eq {  100 neg  0250 neg translate} if
  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF  86 SHAl add MM 020 MM translate 12 /Times-ISOL1 FS -9 MM -7 MM  moveto
( ) show
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 18

%line 409
%!PS-Adobe-3.0 EPSF-3.0 hgb60-8N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb60-8N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
161 MM 197 MM translate
  10 /Times-ISOL1 FS  1 1 scale  -77 -91 translate
%%BeginDocument: Bild 12

%line 419

%%EndDocument
EndEPSF grestore gsave
/SHSr 2 MM def /SHAr 2 MM def
BeginEPSF
161 MM 06 MM sub SHSr sub 152 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 21

%line 429
%!PS-Adobe-3.0 EPSF-3.0 hgb61-1N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb61-1N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
219 MM 06 MM sub SHAr add 152 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 22

%line 439
%!PS-Adobe-3.0 EPSF-3.0 hgb61-2N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb61-2N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
161 MM 06 MM sub SHSr sub 108 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 23

%line 449
%!PS-Adobe-3.0 EPSF-3.0 hgb61-3n_54
%%BoundingBox: 70 85 387 335

%START PDFDE011.EPS
/pdfmark13 where {pop} {userdict /pdfmark13 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2023080112000)
 /ModDate (D:2023080112000)
/DOCINFO pdfmark13
[ /View [ /Fit ]
/DOCVIEW pdfmark13
%END  PDFDE011
%line 20******************************************************
/BeginEPSF {% def               % Prepare for EPS file
/b4_Inc_state save def          % Save state for cleanup
/dict_count countdictstack def
/op_count count 1 sub def       % Count objects on op stack
userdict begin                  % Make userdict current dict
/showpage {} def
0 setgray 0 setlinecap
1 setlinewidth 0 setlinejoin
10 setmiterlimit [] 0 setdash newpath
/languagelevel where            % If level not equal to 1 then
 {pop languagelevel where       % If level not equal to 1 then
 1 ne
 {false setstrokeadjust false setoverprint
 } if
} if
} bind def

/EndEPSF  {% def              % End for EPS file
 count op_count sub {pop} repeat
 countdictstack dict_count sub {end} repeat	% Clean up dict stack
 b4_Inc_state restore
} bind def

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/languagelevel where {pop languagelevel} {1} ifelse
                     /PSL12 exch def
/dictende {counttomark 2 idiv dup dict begin {def}
           repeat pop currentdict end} bind def

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/Courier findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Courier-ISOL1 exch definefont pop

/Courier-Oblique findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/CourierI-ISOL1 exch definefont pop

/Courier-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/CourierB-ISOL1 exch definefont pop

/Courier-BoldOblique findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/CourierBI-ISOL1 exch definefont pop

/TG   {350 /Times-ISOL1 FS} bind def
/TM   {280 /Times-ISOL1 FS} bind def
/TK   {240 /Times-ISOL1 FS} bind def
/TS   {200 /Times-ISOL1 FS} bind def
/TL   {160 /Times-ISOL1 FS} bind def
/TV   {110 /Times-ISOL1 FS} bind def
/TW   {080 /Times-ISOL1 FS} bind def

/TIG  {350 /TimesI-ISOL1 FS} bind def
/TIM  {280 /TimesI-ISOL1 FS} bind def
/TIK  {240 /TimesI-ISOL1 FS} bind def
/TIS  {200 /TimesI-ISOL1 FS} bind def
/TIL  {160 /TimesI-ISOL1 FS} bind def
/TIV  {110 /TimesI-ISOL1 FS} bind def
/TIW  {080 /TimesI-ISOL1 FS} bind def

/TBG  {350 /TimesB-ISOL1 FS} bind def
/TBM  {280 /TimesB-ISOL1 FS} bind def
/TBK  {240 /TimesB-ISOL1 FS} bind def
/TBS  {200 /TimesB-ISOL1 FS} bind def
/TBL  {160 /TimesB-ISOL1 FS} bind def
/TBV  {110 /TimesB-ISOL1 FS} bind def
/TBW  {080 /TimesB-ISOL1 FS} bind def

/TBIG {350 /TimesBI-ISOL1 FS} bind def
/TBIM {280 /TimesBI-ISOL1 FS} bind def
/TBIK {240 /TimesBI-ISOL1 FS} bind def
/TBIS {200 /TimesBI-ISOL1 FS} bind def
/TBIL {160 /TimesBI-ISOL1 FS} bind def
/TBIV {110 /TimesBI-ISOL1 FS} bind def
/TBIW {080 /TimesBI-ISOL1 FS} bind def

/SG {350 /Symbol FS} bind def
/SM {280 /Symbol FS} bind def
/SK {240 /Symbol FS} bind def
/SS {200 /Symbol FS} bind def
/SL {160 /Symbol FS} bind def
/SV {110 /Symbol FS} bind def
/SW {080 /Symbol FS} bind def

%*****************************************************************

%%EndProlog
gsave

%lanindL2.EPS START  20000505
/lanind 0 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def


/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 0 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

gsave

/cvishow0 {cvi 6 string cvs show} def

/kchartl 1 def %0:left page, 1:right page
/pchartl 0 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

40 setlinewidth
/ymax1 08550 def
/xmax1 11050 def %2x5400+250=11050
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
pchartl 0 eq {(3n) show}
             {(7n) show} ifelse
grestore
gsave
%00
%01
%02

/SHSl 00.0 def /SHAl -3.0 def
/STSl 13.0 def /STAl 14.5 def
BeginEPSF
 28 SHSl sub MM 064 STSl add MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 15

%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-1a
%%BoundingBox: 70 85 228 206

%START PDFDE011.EPS
/pdfmark11 where {pop} {userdict /pdfmark11 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark11
[ /View [ /Fit ]
/DOCVIEW pdfmark11
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 1 def %0:left page, 1:right page
/pchartl 0 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 0 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-1a) show}
             {(hgb61-3n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
0 1 0 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

%  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
1 cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
%  xchartl    0 eq {  100 neg 13000 neg translate} if
%  xchartl    1 eq { 5700 neg 13000 neg translate} if
%  xchartl    2 eq {  100 neg 08750 neg translate} if
%  xchartl    3 eq { 5700 neg 08750 neg translate} if

%  xchartl    4 eq {  100 neg  4500 neg translate} if
%  xchartl    5 eq { 5700 neg  4500 neg translate} if
%  xchartl    6 eq {  100 neg  0250 neg translate} if
%  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer

%line 239

%%EndDocument
EndEPSF grestore gsave

BeginEPSF
 86 SHAl add MM 064 STSl add MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 16

%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-3a
%%BoundingBox: 70 85 228 206

%START PDFDE011.EPS
/pdfmark12 where {pop} {userdict /pdfmark12 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark12
[ /View [ /Fit ]
/DOCVIEW pdfmark12
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 1 def %0:left page, 1:right page
/pchartl 0 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 0 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-3a) show}
             {(hgb61-3n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
2 1 2 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

%  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
2 cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
%  xchartl    0 eq {  100 neg 13000 neg translate} if
%  xchartl    1 eq { 5700 neg 13000 neg translate} if
%  xchartl    2 eq {  100 neg 08750 neg translate} if
%  xchartl    3 eq { 5700 neg 08750 neg translate} if

%  xchartl    4 eq {  100 neg  4500 neg translate} if
%  xchartl    5 eq { 5700 neg  4500 neg translate} if
%  xchartl    6 eq {  100 neg  0250 neg translate} if
%  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer

%line 249

%%EndDocument
EndEPSF grestore gsave
BeginEPSF
 /xc1 16 def /yc1 12 def /xt 1 def xchart 1 eq {/xt 1 def} if
 28 SHSl sub MM 020 STAl add MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 17

%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-5a
%%BoundingBox: 70 85 228 206

%START PDFDE011.EPS
/pdfmark13 where {pop} {userdict /pdfmark13 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark13
[ /View [ /Fit ]
/DOCVIEW pdfmark13
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 1 def %0:left page, 1:right page
/pchartl 1 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 0 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-5a) show}
             {(hgb61-7n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
4 1 4 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

%  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
3 cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
%  xchartl    0 eq {  100 neg 13000 neg translate} if
%  xchartl    1 eq { 5700 neg 13000 neg translate} if
%  xchartl    2 eq {  100 neg 08750 neg translate} if
%  xchartl    3 eq { 5700 neg 08750 neg translate} if

%  xchartl    4 eq {  100 neg  4500 neg translate} if
%  xchartl    5 eq { 5700 neg  4500 neg translate} if
%  xchartl    6 eq {  100 neg  0250 neg translate} if
%  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer

%line 259

%%EndDocument
EndEPSF grestore gsave

BeginEPSF  86 SHAl add MM 020 STAl add MM translate 12 /Times-ISOL1 FS -9 MM -7 MM  moveto
( ) show
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 18

%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-7a
%%BoundingBox: 70 85 228 206

%START PDFDE011.EPS
/pdfmark14 where {pop} {userdict /pdfmark14 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark14
[ /View [ /Fit ]
/DOCVIEW pdfmark14
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 1 def %0:left page, 1:right page
/pchartl 1 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 0 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-7a) show}
             {(hgb61-7n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
6 1 6 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

%  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
4 cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
%  xchartl    0 eq {  100 neg 13000 neg translate} if
%  xchartl    1 eq { 5700 neg 13000 neg translate} if
%  xchartl    2 eq {  100 neg 08750 neg translate} if
%  xchartl    3 eq { 5700 neg 08750 neg translate} if

%  xchartl    4 eq {  100 neg  4500 neg translate} if
%  xchartl    5 eq { 5700 neg  4500 neg translate} if
%  xchartl    6 eq {  100 neg  0250 neg translate} if
%  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer

%line 269

%%EndDocument
EndEPSF grestore gsave

showpage
grestore

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
219 MM 06 MM sub SHAr add 108 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 24

%line 459
%!PS-Adobe-3.0 EPSF-3.0 hgb61-4N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb61-4N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
161 MM 06 MM sub SHSr sub 064 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 25

%line 469
%!PS-Adobe-3.0 EPSF-3.0 hgb61-5N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb61-5N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
219 MM 06 MM sub SHAr add 064 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 26

%line 479
%!PS-Adobe-3.0 EPSF-3.0 hgb61-6N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb61-6N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
161 MM 06 MM sub SHSr sub 020 MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 27

%line 489
%!PS-Adobe-3.0 EPSF-3.0 hgb61-7n_54
%%BoundingBox: 70 85 387 335

%START PDFDE011.EPS
/pdfmark17 where {pop} {userdict /pdfmark17 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2023080112000)
 /ModDate (D:2023080112000)
/DOCINFO pdfmark17
[ /View [ /Fit ]
/DOCVIEW pdfmark17
%END  PDFDE011
%line 20******************************************************
/BeginEPSF {% def               % Prepare for EPS file
/b4_Inc_state save def          % Save state for cleanup
/dict_count countdictstack def
/op_count count 1 sub def       % Count objects on op stack
userdict begin                  % Make userdict current dict
/showpage {} def
0 setgray 0 setlinecap
1 setlinewidth 0 setlinejoin
10 setmiterlimit [] 0 setdash newpath
/languagelevel where            % If level not equal to 1 then
 {pop languagelevel where       % If level not equal to 1 then
 1 ne
 {false setstrokeadjust false setoverprint
 } if
} if
} bind def

/EndEPSF  {% def              % End for EPS file
 count op_count sub {pop} repeat
 countdictstack dict_count sub {end} repeat	% Clean up dict stack
 b4_Inc_state restore
} bind def

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/languagelevel where {pop languagelevel} {1} ifelse
                     /PSL12 exch def
/dictende {counttomark 2 idiv dup dict begin {def}
           repeat pop currentdict end} bind def

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/Courier findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Courier-ISOL1 exch definefont pop

/Courier-Oblique findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/CourierI-ISOL1 exch definefont pop

/Courier-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/CourierB-ISOL1 exch definefont pop

/Courier-BoldOblique findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/CourierBI-ISOL1 exch definefont pop

/TG   {350 /Times-ISOL1 FS} bind def
/TM   {280 /Times-ISOL1 FS} bind def
/TK   {240 /Times-ISOL1 FS} bind def
/TS   {200 /Times-ISOL1 FS} bind def
/TL   {160 /Times-ISOL1 FS} bind def
/TV   {110 /Times-ISOL1 FS} bind def
/TW   {080 /Times-ISOL1 FS} bind def

/TIG  {350 /TimesI-ISOL1 FS} bind def
/TIM  {280 /TimesI-ISOL1 FS} bind def
/TIK  {240 /TimesI-ISOL1 FS} bind def
/TIS  {200 /TimesI-ISOL1 FS} bind def
/TIL  {160 /TimesI-ISOL1 FS} bind def
/TIV  {110 /TimesI-ISOL1 FS} bind def
/TIW  {080 /TimesI-ISOL1 FS} bind def

/TBG  {350 /TimesB-ISOL1 FS} bind def
/TBM  {280 /TimesB-ISOL1 FS} bind def
/TBK  {240 /TimesB-ISOL1 FS} bind def
/TBS  {200 /TimesB-ISOL1 FS} bind def
/TBL  {160 /TimesB-ISOL1 FS} bind def
/TBV  {110 /TimesB-ISOL1 FS} bind def
/TBW  {080 /TimesB-ISOL1 FS} bind def

/TBIG {350 /TimesBI-ISOL1 FS} bind def
/TBIM {280 /TimesBI-ISOL1 FS} bind def
/TBIK {240 /TimesBI-ISOL1 FS} bind def
/TBIS {200 /TimesBI-ISOL1 FS} bind def
/TBIL {160 /TimesBI-ISOL1 FS} bind def
/TBIV {110 /TimesBI-ISOL1 FS} bind def
/TBIW {080 /TimesBI-ISOL1 FS} bind def

/SG {350 /Symbol FS} bind def
/SM {280 /Symbol FS} bind def
/SK {240 /Symbol FS} bind def
/SS {200 /Symbol FS} bind def
/SL {160 /Symbol FS} bind def
/SV {110 /Symbol FS} bind def
/SW {080 /Symbol FS} bind def

%*****************************************************************

%%EndProlog
gsave

%lanindL2.EPS START  20000505
/lanind 0 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def


/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 0 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

gsave

/cvishow0 {cvi 6 string cvs show} def

/kchartl 1 def %0:left page, 1:right page
/pchartl 1 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

40 setlinewidth
/ymax1 08550 def
/xmax1 11050 def %2x5400+250=11050
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
pchartl 0 eq {(3n) show}
             {(7n) show} ifelse
grestore
gsave
%00
%01
%02

/SHSl 00.0 def /SHAl -3.0 def
/STSl 13.0 def /STAl 14.5 def
BeginEPSF
 28 SHSl sub MM 064 STSl add MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 15

%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-2a
%%BoundingBox: 70 85 228 206

%START PDFDE011.EPS
/pdfmark15 where {pop} {userdict /pdfmark15 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark15
[ /View [ /Fit ]
/DOCVIEW pdfmark15
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 1 def %0:left page, 1:right page
/pchartl 0 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 0 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-2a) show}
             {(hgb61-3n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
1 1 1 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

%  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
5 cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
%  xchartl    0 eq {  100 neg 13000 neg translate} if
%  xchartl    1 eq { 5700 neg 13000 neg translate} if
%  xchartl    2 eq {  100 neg 08750 neg translate} if
%  xchartl    3 eq { 5700 neg 08750 neg translate} if

%  xchartl    4 eq {  100 neg  4500 neg translate} if
%  xchartl    5 eq { 5700 neg  4500 neg translate} if
%  xchartl    6 eq {  100 neg  0250 neg translate} if
%  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer

%line 239

%%EndDocument
EndEPSF grestore gsave

BeginEPSF
 86 SHAl add MM 064 STSl add MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 16

%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-4a
%%BoundingBox: 70 85 228 206

%START PDFDE011.EPS
/pdfmark03 where {pop} {userdict /pdfmark03 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark03
[ /View [ /Fit ]
/DOCVIEW pdfmark03
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 1 def %0:left page, 1:right page
/pchartl 0 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 0 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-4a) show}
             {(hgb61-3n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
3 1 3 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

%  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
6 cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
%  xchartl    0 eq {  100 neg 13000 neg translate} if
%  xchartl    1 eq { 5700 neg 13000 neg translate} if
%  xchartl    2 eq {  100 neg 08750 neg translate} if
%  xchartl    3 eq { 5700 neg 08750 neg translate} if

%  xchartl    4 eq {  100 neg  4500 neg translate} if
%  xchartl    5 eq { 5700 neg  4500 neg translate} if
%  xchartl    6 eq {  100 neg  0250 neg translate} if
%  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer

%line 249

%%EndDocument
EndEPSF grestore gsave
BeginEPSF
 /xc1 16 def /yc1 12 def /xt 1 def xchart 1 eq {/xt 1 def} if
 28 SHSl sub MM 020 STAl add MM translate
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 17

%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-6a
%%BoundingBox: 70 85 228 206

%START PDFDE011.EPS
/pdfmark17 where {pop} {userdict /pdfmark17 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark17
[ /View [ /Fit ]
/DOCVIEW pdfmark17
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 1 def %0:left page, 1:right page
/pchartl 1 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 0 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-6a) show}
             {(hgb61-7n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
5 1 5 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

%  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
7 cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
%  xchartl    0 eq {  100 neg 13000 neg translate} if
%  xchartl    1 eq { 5700 neg 13000 neg translate} if
%  xchartl    2 eq {  100 neg 08750 neg translate} if
%  xchartl    3 eq { 5700 neg 08750 neg translate} if

%  xchartl    4 eq {  100 neg  4500 neg translate} if
%  xchartl    5 eq { 5700 neg  4500 neg translate} if
%  xchartl    6 eq {  100 neg  0250 neg translate} if
%  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer

%line 259

%%EndDocument
EndEPSF grestore gsave

BeginEPSF  86 SHAl add MM 020 STAl add MM translate 12 /Times-ISOL1 FS -9 MM -7 MM  moveto
( ) show
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 18

%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/hgb6/hgb60-8a
%%BoundingBox: 70 85 228 206

%START PDFDE011.EPS
/pdfmark18 where {pop} {userdict /pdfmark18 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/hgb6/hgb6.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de or http://color.li.tu-berlin.de)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2024100112000)
 /ModDate (D:20241001112000)
/DOCINFO pdfmark18
[ /View [ /Fit ]
/DOCVIEW pdfmark18
%END  PDFDE011

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end
/TimesBI-ISOL1 exch definefont pop

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/TS {160 /Times-ISOL1 FS} bind def
/TL {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIS {160 /TimesI-ISOL1 FS} bind def
/TIL {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBS {160 /TimesB-ISOL1 FS} bind def
/TBL {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIS {160 /TimesBI-ISOL1 FS} bind def
/TBIL {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/SS {160 /Symbol FS} bind def
/SL {200 /Symbol FS} bind def
/SK {250 /Symbol FS} bind def
/SM {300 /Symbol FS} bind def
/SG {350 /Symbol FS} bind def

/CS {160 /Courier-ISOL1 FS} bind def
/CL {200 /Courier-ISOL1 FS} bind def
/CK {250 /Courier-ISOL1 FS} bind def
/CM {300 /Courier-ISOL1 FS} bind def
/CG {350 /Courier-ISOL1 FS} bind def

/CBS {160 /CourierB-ISOL1 FS} bind def
/CBL {200 /CourierB-ISOL1 FS} bind def
/CBK {250 /CourierB-ISOL1 FS} bind def
/CBM {300 /CourierB-ISOL1 FS} bind def
/CBG {350 /CourierB-ISOL1 FS} bind def

/nGs {350 /Times-ISOL1 FS  show} bind def
/kGs {350 /TimesI-ISOL1 FS  show} bind def
/bGs {350 /TimesB-ISOL1 FS  show} bind def
/jGs {350 /TimesBI-ISOL1 FS  show} bind def
/sGs {350 /Symbol FS  show} bind def
/iGs {300 /Times-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/eGs {300 /Times-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ibGb {300 /TimesB-ISOL1 FS 0 -90 rmoveto show 0   90 rmoveto} bind def
/ebGb {300 /TimesB-ISOL1 FS 0 200 rmoveto show 0 -200 rmoveto} bind def
/ipG {300 /Times-ISOL1 FS 50 50 rmoveto (\267) show 50 -50 rmoveto} bind def

%20% kleiner
/nMs {300 /Times-ISOL1 FS  show TM} bind def
/kMs {300 /TimesI-ISOL1 FS  show TM} bind def
/bMs {300 /TimesB-ISOL1 FS  show TM} bind def
/jMs {300 /TimesBI-ISOL1 FS  show TM} bind def
/sMs {300 /Symbol FS  show TM} bind def
/iMs {250 /Times-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/eMs {250 /Times-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ibMs {250 /TimesB-ISOL1 FS 0 -70 rmoveto show 0 70 rmoveto TM} bind def
/ebMs {250 /TimesB-ISOL1 FS 0 160 rmoveto show 0 -160 rmoveto TM} bind def
/ipM {250 /Times-ISOL1 FS 40 40 rmoveto (\267) show 40 -40 rmoveto TM} bind def

%40% kleiner
/nKs {250 /Times-ISOL1 FS  show TK} bind def
/kKs {250 /TimesI-ISOL1 FS  show TK} bind def
/bKs {250 /TimesB-ISOL1 FS  show TK} bind def
/jKs {250 /TimesBI-ISOL1 FS  show TK} bind def
/sKs {250 /Symbol FS  show TK} bind def
/iKs {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eKs {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ibKs {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/ebKs {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ipK {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/nLs {200 /Times-ISOL1 FS  show TL} bind def
/kLs {200 /TimesI-ISOL1 FS  show TL} bind def
/bLs {200 /TimesB-ISOL1 FS  show TL} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TL} bind def
/sLs {200 /Symbol FS  show TL} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TL} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TL} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TL} bind def

/20rm {20 0 rmoveto} def

/cvishow {cvi 10 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 10 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 10 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 10 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 10 string cvs show} def

/cvsshow1x {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10 mul cvi abs /nxi exch def          %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2x {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 100 mul cvi abs /nxi exch def         %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3x {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show}
             {() show} ifelse
             nxx 1000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

/cvsshow4x {/nxx exch def                              %example nxx=99.123/99.0
             nxx 0 lt {(-) show}
                      {() show} ifelse
             nxx 10000 mul cvi abs /nxi exch def        %nxi=99123/99012/99001/9
             nxi 10000 idiv /nxa exch def               %nxa=99
             nxi nxa 10000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                       %nxb=99,
             nxb 1000 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  100 ge
             nxb  999 le and {(0) show nxb cvishow} if  %nxb=012
             nxb  10 ge
             nxb  99 le and {(00) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(000) show nxb cvishow} if %nxb=001
             nxb   0 eq {(0000) show} if                %nxb=000
           } def

/cvsshow4s {/nxx exch def                              %example nxx=-0,1234
             nxx 0 lt {(-0,) show}
                      {(0,) show} ifelse
             /nxi nxx 10000 mul cvi abs def            %nxi=1234
             nxi 1000 ge {nxi cvishow} if              %nxb=123/012/001/000
             nxi 100 ge
             nxi 999 le and {(0) show nxi cvishow} if      %nxb=123/012/001/000
             nxi  10 ge
             nxi  99 le and {(00) show nxi cvishow} if  %nxb=012
             nxi   1 ge
             nxi   9 le and {(000) show nxi cvishow} if %nxb=001
             nxi   0 eq {(0000) show} if                %nxb=000
           } def

%XCHA01.PS BEG
/rec %x, y width heigth
  {/heigth exch def /width exch def
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colrecfi %x y width heigth r g b
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth r g b
  {setrgbcolor rec stroke} bind def

/rem %x, y width heigth
  {/heigth exch 0.5 mul def /width exch 0.5 mul def
   /yleftb exch heigth 0.5 mul add def
   /xleftb exch width  0.5 mul add def
   xleftb yleftb
   moveto width 0 rlineto 0 heigth rlineto width neg 0 rlineto
   closepath } bind def

/colremfi %x y width heigth r g b
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth r g b
  {setrgbcolor rem stroke} bind def

/tfr {1.0 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0.0 1.0 0.0 setrgbcolor} bind def
/tfb {0.0 0.0 1.0 setrgbcolor} bind def
/tfc {0.0 1.0 1.0 setrgbcolor} bind def
/tfm {1.0 0.0 1.0 setrgbcolor} bind def
/tfy {1.0 1.0 0.0 setrgbcolor} bind def

/tfw {1.00 1.00 1.00 setrgbcolor} bind def %Graureihe
/tfh {0.75 0.75 0.75 setrgbcolor} bind def
/tfz {0.50 0.50 0.50 setrgbcolor} bind def
/tfd {0.25 0.25 0.25 setrgbcolor} bind def
/tfn {0.00 0.00 0.00 setrgbcolor} bind def

/YnW 100 def %LABJND, CIELAB

/Yi   101 array def %101(W)+3*101(R,G,B)
/dYi  101 array def
/L*i  101 array def

/X00i 101 array def %log(Xi)

/Y00i 101 array def %L*i, log(L*i)
/Y0ui 101 array def %L*i/Lu, log(L*i/L*u)
/Y10i 101 array def %dYi, log(dYi)
/Y1ui 101 array def %dYi/dYu, log(dYi/dYu)
/Y20i 101 array def %dYi/Yi, log(dYi/Yi) sensitivity
/Y2ui 101 array def %(dYi/dYu)/(Yi/Yu), log[(dYi/dYu)/(Yi/Yu)]
/Y30i 101 array def %Yi/dYi, log(Yi/dYi) contrast
/Y3ui 101 array def %(Yi/Yu)/(dYi/dYu), log[(Yi/Yu)/(dYi/dYu)]

/Yx0i 101 array def %one of eight above

/MULX 1000 def
/MULY 1000 def
/ifunc 0 def %0: LABJND, 1: CIELAB

%data for LINLAB, LABJND, CIELAB
/c24 2.4 def %LINYAB
/e10D24 1.0 2.4 div def
/e14D24 1.4 2.4 div def

/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def

%***************************************************
%ifunc 0 eq {%ifunc=0

%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
/JNDC 1.5 def %c=A0
/JNDS 0.0170 def %s=A1
/JNDQ 0.0058 def %q=A2
/JNDA0 JNDC def
/JNDA1 JNDS def
/JNDA2 JNDQ def

/JNDA JNDQ JNDS div def %a=q/s=A2/A1=0,3411
/JNDT JNDC JNDS div def %t=c/s=A0/A1=88,23
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu=A2/A1*Yu=
/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6

ifunc 0 eq {%ifunc=0
%dY = (s + q Y)/ c =  (A1 + A2 * Y) / A0
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t = [1 + (A2/A1) * Y] / (A0/A1)
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t = [ 1 + A2/A1*Yu*(Y/Yu) ] / (A0/A1) 
%L*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=Y0=1.5=A0
%a=q/s=0.3411=A2/A1
%b=a*Yu=6.1411=(A2/A1)*Yu
%t=c/s=88.23=A0/A1
%d=t/a=258.62=(A0/A1)/(A2/A1)=A0/A2

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def %[1 + (A2/A1) * Yu] / (A0/A1) 
/L*u Yu JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 
/iu 18 def

%***************************************************       
/Yi_L*i_dYi_L_0 {%BEG Yi_L*i_dYi_L_0 L=LABJND
%i=0 not available
1 1 100 {/i exch def %i=0,100
         Yi  i i YnW mul 100. div put
         %L*i = A0/A2 * ln [1 + (A2/A1) * Y]
         L*i i Yi i get JNDA mul 1 add ln JNDD mul put
         %dYi = [1 + (A2/A1) * Y] / (A0/A1)
         dYi i Yi i get JNDA mul 1 add JNDT div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_L_0 =LABJND

} if %ifunc=0

%***************************************************
ifunc 1 eq {%ifunc=1

/econst 2.71828182 def
/W2 2 sqrt def
/FL 0.0001 def

%Yn=100, L*u=50
%Yu=Yn*[(L*u+16)/116]**3
%dYu=3*[Yn**(1/3)/116*Yu**(2/3)]
/Yn 100 def
/L*u 50 def
/Yu L*u 16 add 116 div 3 exp 100 mul def
/dYu Yn e10D30 exp 116 div 3 mul Yu e20D30 exp mul def
/iu 18 def

/aCIE 3 116 div Yn e20D30 exp mul def
/bCIE aCIE iu e20D30 exp mul def

/cCIE 3 116 div Yn e10D30 exp mul def
/dCIE cCIE iu e20D30 exp mul def

/eCIE 116 3 div Yn e20D30 exp mul def
/fCIE eCIE iu e20D30 exp mul def

%*************************************************
/Yi_L*i_dYi_C_0 {%BEG Yi_L*i_dYi_C_0 C=CIELAB
1 1 100 {/i exch def %i=1,100
         Yi  i i YnW mul 100. div put
         L*i i Yi i get YnW div e10D30 exp 116 mul 16 sub put
         dYi i Yi i get YnW div e20D30 exp c30 mul
         100 mul 116 div put
        } for %i=1,100
} bind def %END Yi_L*i_dYi_C_0 C=CIELAB

} if %ifunc=1

/ioutc 0 def
/cero_line {%BEG cero_line
%1. log line = cero line
tfr
-2. MULX mul 1. log MULY mul moveto
 0. MULX mul 1. log MULY mul lineto stroke
tfn %tfw

%2. log line = +1 line
tfg
-2. MULX mul 10. log MULY mul moveto
 0. MULX mul 10. log MULY mul lineto stroke
tfn %tfw
} bind def %cero line

%***************************************************
/Yi_Yxyi {%BEG Yi_Yxyi definition for 4 functions: L*i, dYi, dYi/Yi, Yi/dYi
%i=0 not available
1 1 100 {/i exch def %i=1,100

         X00i i Yi  i get put

         Y00i i L*i i get put
         Y0ui i L*i i get L*u div put
         Y10i i dYi i get put
         Y1ui i dYi i get dYu div put
         Y20i i dYi i get Yi i get div put
         Y2ui i dYi i get Yi i get div
                dYu       Yu       div div put
         Y30i i Yi i get dYi i get div put
         Y3ui i Yi i get dYi i get div
                Yu       dYu       div div put

        } for %i=1,100

} bind def %END Yi_Yxyi

%***************************************************
/Y_curve {%BEG Y_curve
50 setlinewidth
0 1 1 {/je exch def %je=0,1
je 0 eq {1 1 1 setrgbcolor} if
je 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         X00i i get log MULX mul
         Yx0i i get log MULY mul
         i i1 eq {moveto} if
         i i1 1 add ge
         i i2 1 sub le and {lineto} if
         i i2 eq {stroke} if
        } for %i=i1,i2
} for %je=0,1

50 setlinewidth
1 99 100 {/i exch def %i=1,99,100
       tfb
       X00i i get log MULX mul
       Yx0i i get log MULY mul 060 0 360 arc fill
       newpath
       X00i i get log 0.25 sub MULX mul
       Yx0i i get log 0.15 add MULY mul
       moveto
       TBK
       xchartl 0 eq 
       xchartl 6 eq or {Yx0i i get cvsshow1x}
                       {Yx0i i get cvsshow3x} ifelse
       0 setgray
       newpath
      } for %i=1,99,100

[ ] 0 setdash
0 setgray

} bind def %END Y_curve

%***************************************************
%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (F) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def}
               {/colorm1 0 def} ifelse
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def}
               {/deintp1 0 def} ifelse
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def}
               {/xcolor1 3 def} ifelse
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchart1 0 def /xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 0 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def}
               {/pchart1 3 def} ifelse
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def}
               {/colsep1 0 def} ifelse
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def}
               {/pmetam1 0 def} ifelse

%either defaul values for xchart=0 or values for xchart=1
/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/ioute 0 def
%0 1 01 {/ioute exch def %ioute=0,0

colorm 0 eq deintp 0 eq and {/Txx (d) def /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if %always independent of intended output

5 /Times-ISOL1 FS
/cvishow {cvi 6 string cvs show} def
%75 85 moveto
%lanind cvishow (-) show
%colorm cvishow
%deintp cvishow
%xcolor cvishow
%xchart cvishow
%pchart cvishow
%colsep cvishow (-L) show pmetam cvishow

gsave
%XCHA01.PS END

ifunc 0 eq {Yi_L*i_dYi_L_0} if
ifunc 1 eq {Yi_L*i_dYi_C_0} if

Yi_Yxyi

/cvishow0 {cvi 6 string cvs show} def

/schartl 1 def %0:kx2=7, 1:kx2=3
/kchartl 1 def %0:left page, 1:right page
/pchartl 1 def %0:top  page, 4:down  page %not used

72 90 translate

0.010 MM dup scale

/xbtex0 0 def  %xbtex=0 for files Y1(0/1)-(3/7)n.EPS
xbtex0 1 eq {%xbtex0=1

40 setlinewidth
/ymax1 08550 def
/xmax1 11200 def
1.0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath fill
0 setgray
0 0  moveto xmax1 0 rlineto 0 ymax1 rlineto xmax1 neg 0 rlineto
closepath stroke

TK
0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-8a) show}
             {(hgb61-7n) show} ifelse
} if %xbtex0=1


kchartl 0 eq {pchartl 0 eq {/kx1 0 def /kxd 1 def /kx2 
                            schartl 0 eq {7 def}{3 def} ifelse}
                           {/kx1 4 def /kxd 1 def /kx2 7 def} ifelse
             } if %kchartl=0
kchartl 1 eq {pchartl 0 eq {/kx1 0 def /kxd 2 def /kx2 6 def}
                           {/kx1 1 def /kxd 2 def /kx2 7 def} ifelse
             } if %kchartl=1
kchartl 0 eq {%      0     1     2     3     4     5     6     7
              /xpos [00100 05700 00100 05700 00100 05700 00100 05700] def
              /ypos [04500 04500 00250 00250 04500 04500 00250 00250] def
             }
             {%      0     1     2     3     4     5     6     7
              /xpos [00100 00100 05700 05700 00100 00100 05700 05700] def
              /ypos [04500 04500 04500 04500 00250 00250 00250 00250] def
             } ifelse %kchartl

/xchartl 0 def
7 1 7 {/xchartl exch def %xchartl=kx1,kxd,kx2
gsave

20 setlinewidth

%  xchartl   7 le {xpos xchartl get ypos xchartl get translate} if

0 setgray
150  /Times-ISOL1 FS
150 -140 moveto
kchartl 0 eq {(hgb60-) show}
             {(hgb61-) show} ifelse
8 cvishow0
(a) show %a

/xwidth 5400 def
/ywidth 4000 def
25 setlinewidth
1 1 1 setrgbcolor
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

0 setlinewidth
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath clip

20 setlinewidth
0 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath stroke


tfn %tfw
/xtr0 680 def
/ytr0 280 def

xtr0 ytr0 translate

%*********************************************************************
50 setlinewidth %50 setlinewidth
tfn
 0 0 moveto 4500 0 rlineto stroke
 0 0 moveto 0 3100 rlineto stroke

4500 100 add 0 moveto
-100 50 rlineto 0 -100 rlineto closepath fill
0 3100 100 add moveto
-50 -100 rlineto 100 0 rlineto closepath fill

TBL
/tx [(-2) (-1) (  0) (  1) (  2)] def
/txl [( ) (0,1) (  1) ( 10) (100)] def

%!x-Achse: 100 Einheiten = 0600 Skalen-Einheiten
0 1 4 {/i exch def
       /ixt {-150 i 1000 mul add} def
       /ixl { 000 i 1000 mul add} def
        ixt -230 moveto tx i get exec show
        tfb
        i 1 ge {ixt 100 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for

tfn %tfw
3300  100 moveto (Y) jLs (u) ibLs TBL (=18) show
tfn

/ixtt 4 1000 mul def
/iytt -200 def
ixtt 200 add iytt moveto
(log) bLs 20rm (Y) jLs
/iytt 050 def
ixtt 200 add iytt moveto
tfb (Y) jLs tfn

tfn %tfw
2000 0 moveto 1900 0 rlineto stroke
tfg
[100] 0 setdash
2000 0 moveto 1900 0 rlineto stroke
[ ] 0 setdash

tfn
%!y-Achse: 100 S-Einheiten = 1000 Skalen-Einheiten
/j1y 2 def %default
/j2y 5 def
ifunc 0 eq {%ifunc=0 LABJND
xchartl  0 eq {/j1y 4 def /j2y 6 def} if
xchartl  2 eq {/j1y 1 def /j2y 4 def} if
xchartl  4 eq {/j1y 0 def /j2y 3 def} if
xchartl  6 eq {/j1y 4 def /j2y 6 def} if
           } if %ifunc=0 LABJND
ifunc 1 eq {%ifunc=0 CIELAB
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  2 eq {/j1y 2 def /j2y 5 def} if
xchartl  4 eq {/j1y 1 def /j2y 4 def} if
xchartl  6 eq {/j1y 3 def /j2y 5 def} if
           } if %ifunc=1 CIELAB
TBL
%yshift -1000  0   1000    2000    3000    4000
%        0     1      2      3       4       5       6       7       8
/ty [(  -3)(  -2)(  -1) (    0) (    1) (    2) (    3) (    4) (    5)] def
/tyl[(0,001)(0,01) (0,1)     (1)    (10)   (100)  (1000) (10000) (100000)] def
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           -400 jyt moveto ty j get show
           tfb
           j j1y 1 add ge {100 jyt moveto tyl j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

%********************************************************

%BEG C01_C08 ********************************************

tfn %tfw
050 xtr0 sub 3725 ytr0 sub moveto

xchartl 00 eq {%xchartl=00
               (log ) bKs (L*) jKs
               ifunc 0 eq {(85,2) ibKs} if
               TBK ( ) show 
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

              } if %xchartl=00

xchartl 01 eq {%xchartl=01
               (log \050) bKs 
               (L*) jKs  ifunc 0 eq {(85,2) ibKs} if
               (/L*) jKs ifunc 0 eq {(85,2,) ibKs} if
               (u) ibKs (\051 ) bKs

               2100 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK ifunc 0 eq {(LABJND ) show} if
                   ifunc 1 eq {(CIELAB ) show} if
               TBK (lightness) showen
               (Helligkeit) showde

               2100 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (L*) jKs ifunc 0 eq {(85,2) ibKs} if
               TBK ( normalized to the) showen
               ( normiert f\374r die) showde

               2100 xtr0 sub 3725 ytr0 sub 500 sub moveto
               (background lightness ) showen
               (Umgebungshelligkeit ) showde
               (L*) jKs ifunc 0 eq {(85,2,) ibKs} if 
               (u) ibKs TBK

              } if %xchartl=01

xchartl 02 eq {%xchartl=02
               (log ) bKs (D) sMs 20 0 rmoveto
               (Y  ) jKs TBK

               1300 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde
               (D) sMs 20rm (Y) jKs TBK

              } if %xchartl=02

xchartl 03 eq {%xchartl=03
               (log\050) bKs (D) sMs 20 0 rmoveto
               (Y) jKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051 ) bKs

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               (CIE tristimulus value difference) showen
               (CIE\255Normfarbwertdifferenz) showde

               1800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (D) sMs 20rm (Y) jKs TBK
               ( normalized to ) showen
               ( normiert f\374r ) showde
               (D) sMs 20rm (Y) jKs (u) ibKs TBK

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log \050) bKs (D) sMs (Y/Y\051) jKs TBK

               2500 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

              } if %xchartl=04

xchartl 05 eq {%xchartl=05
               (log [\050) bKs
               (D) sMs (Y/Y) jKs (\051 / \050) bKs
               (D) sMs (Y/Y) jKs (\051) bKs (u) ibKs (]) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (D) sMs (Y) jKs (u) ibKs (/) bKs
               (Y) jKs (u) ibKs TBK

              } if %xchartl=05

xchartl 06 eq {%xchartl=06
               (log \050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

              } if %xchartl=06

xchartl 07 eq {%xchartl=07
               (log [\050) bKs (Y/) jKs (D) sMs
               (Y) jKs (\051 / \050) show
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs (\051] ) bKs

               2800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK (CIE) show
               ( Y) jKs TBK
               (\255based contrast) showen
               (\255Kontrast) showde

               2800 xtr0 sub 3725 ytr0 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (Y) jKs (u) ibKs (/) bKs (D) sMs
               (Y) jKs (u) ibKs

              } if %xchartl=07

tfn %tfw

/y0del 100 def
50 setlinewidth
%*********************************************************************
/C01_ALOG_L* {%BEG C01_ALOG_L*
/Fx0log -2.0 def
/Fy0log  0.0 def

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y00i i get put
        } for %i=1,100

Y_curve

%C01
/x0 0700 def
        xtr neg ytr neg translate %new cero point
        
        x0 L*i iu get log ytrl add MULY mul 120 add moveto
        (log) bLs (\050L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        TBL (\051=) show L*i iu get log cvsshow2x
        /FY20 L*i 20 get def
        /FYiu L*i iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 L*i iu get log ytrl add MULY mul 200 sub moveto
        (L*) jLs
        ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.      MULY mul lineto stroke}
           {iu log MULX mul 0.      MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get def
/Y100DYu L*i 100 get def 
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 3200 def
/x1  800 def
/y1 3000 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 %LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1a]) show

%L*= (t/a) * ln [1 + b(Y/Yu))
x00t y00t ydel 1 mul sub moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) ibLs
(\051]) bLs
x00e y00t ydel 1 mul sub moveto
TBL ([2a]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3a]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1a]) show
} if %infunc=1 LABJND

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C01_ALOG_L*

%*********************************************************************
/C02_ALOG_L*DL*u {%BEG C02_ALOG_L*DTu*
/Fx0log -2.0 def
/Fy0log -1.0 def

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y0ui i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C02
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 120 add moveto
        (log[\050) bLs (L*) jLs ifunc 0 eq {(85,2,) ibLs} if 
        (u) ibLs (/) bLs
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 L*i 20 get L*i iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 200 sub moveto
        (L*) jLs ifunc 0 eq {(85,2,) ibLs} if (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow

        xtr ytr translate %new cero point

/i1 18 def
tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*i i1 get L*u div log MULY mul moveto
i1 log MULX mul L*i i1 get L*u div log MULY mul lineto
i1 log MULX mul Fy0log             MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu L*i   1 get 
         L*i  i1 get div def
/Y100DYu L*i 100 get 
         L*i  i1 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2900 def
/x1  800 def
/y1 2700 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C02
%L*= (t/a) * ln (1 + a Y)

/x00t 0200 def
/x00e 4350 def
/y00t 2700 xchartl 1 eq {100 sub} if def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
TBL ( - ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs (u) iKs
TBL (\051 }) show
x00e y00t moveto
TBL ([1b]) show


x00t y00t ydel 1 mul sub moveto
(L*/L*) jLs (u) iKs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( { ln [ 1 + ) show
TBL (b) show ipK
(\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs
TBL ( - ln \050 1 + ) show
TBL (b) show
TBL (\051 }) show
x00e y00t ydel 1 mul sub moveto
TBL ([2b]) show

x00t 0000 add y00t ydel 2 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 2 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 2 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 2 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 2 mul sub moveto
TBL ([3b]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1b]) show
} if %infunc=1

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C02_ALOG_L*DL*u

%*********************************************************************
/C03_ALOG_DL {%BEG C03_ALOG_DL

/xtr 2000 def
ifunc 0 eq {/ytr  2000 def} if
ifunc 1 eq {/ytr  1000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y10i i get put
        } for %i=1,100

Y_curve

[ ] 0 setdash
50 setlinewidth %50 setlinewidth
0 setgray %1 1 1 setrgbcolor

%C03
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        
        x0 dYi iu get log ytrl add MULY mul 200 sub moveto
        (log) bLs 20rm (dY) jLs (u) ibLs
        (=) bLs TBL dYi iu get log cvsshow2x
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 dYi iu get log ytrl add MULY mul 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -2.     MULY mul lineto stroke}
           {iu log MULX mul -1.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get def
/Y100DYu dYi 100 get def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

/y0 2600 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 3200 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1c]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

%1
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = \050A) show (1) ibLs
TBL (+A) show (2) ibLs ipK
(Y) jLs
TBL (\051/A) show (0) ibLs
TBL (,  see ) showea
(, siehe ) showde
TBL (CIE 230; Eq. (A.7a)) show
x00e y00t ydel 4 mul sub moveto
TBL ([3c]) show

%2
x00t y00t ydel 4 mul sub moveto
(dY) jLs
TBL ( = \050 s + q) show ipK
(Y) jLs
TBL (\051 / c) show
TBL (,  see ) showea
(, siehe ) showde
(Richter ) jLs ((1985)) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

%3
x00t y00t ydel 5 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + a) show ipK
(Y) jLs
TBL (\051 / t) show
x00e y00t ydel 5 mul sub moveto
TBL ([5c]) show

%4
x00t y00t ydel 6 mul sub moveto
(dY) jLs
TBL ( = \050) show
TBL ( 1 + b) show ipK
(\050) bLs (Y) jLs
TBL ( / ) show
(Y) jLs (u) ibLs
TBL (\051 ] / t) show
x00e y00t ydel 6 mul sub moveto
TBL ([6c]) show

x00t 0000 add y00t ydel 7 mul sub moveto
TBL (A) show (1) ibLs
TBL (=s=) show JNDA1 cvsshow4x

x00t 1200 add y00t ydel 7 mul sub moveto
TBL (A) show (2) ibLs
TBL (=q=) show JNDA2 cvsshow4x

x00t 2400 add y00t ydel 7 mul sub moveto
TBL (A) show (0) ibLs
TBL (=c=) show JNDA0 cvsshow1x
x00e y00t ydel 7 mul sub moveto
TBL ([7c]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1c]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2c]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3c]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4c]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5c]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C03_ALOG_DL

%*********************************************************************
/C04_ALOG_DLn {%BEG C04_ALOG_DLn

/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y1ui i get put
        } for %i=1,100

Y_curve

%C04
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 200 sub moveto
        (log[) bLs (\050dY) jLs (u) ibLs (\051/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x0 ytr 120 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x
        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1. def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %new cero point

tfn %tfw
/Y001DYu dYi   1 get dYu div def
/Y100DYu dYi 100 get dYu div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

tfn %tfw
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4350 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln \050 1 + ) show
TBL (a) show ipK 
(Y) jLs
(\051) bLs
x00e y00t moveto
TBL ([1d]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00t 3000 add y00t ydel 1 mul sub moveto
TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

x00t y00t ydel 2 mul sub moveto
TBL
(normalized tristimulus value ) showen
(normierte Normfarbwert\255) showde
(Y) jLs
TBL
( difference) showen
(\255Differenz) showde

x00t y00t ydel 3 mul sub moveto
(dY/dY) jLs (u) ibLs TBL ( = ) show
(\050) bLs
TBL (1 + a) show ipK (Y) jLs
TBL ( \051 / \050 ) show
TBL (1 + a) show ipK
(Y) jLs (u) ibLs
(\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3d]) show
} if %infunc=0 LABJND

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1d]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2d]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY) jLs 
TBL ( = a) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3d]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY) jLs
TBL ( = b) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4d]) show

x00t y00t ydel 4 mul sub moveto
TBL (a = ) show aCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (b = ) show bCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5d]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C04_ALOG_DLn

%*********************************************************************
/C05_ALOG_DL_L {%BEG C05_ALOG_DL_L

/xtr 2000 def
ifunc 0 eq {/ytr  3000 def} if
ifunc 1 eq {/ytr  2000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y20i i get put
        } for %i=1,100

Y_curve

%C05
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 dYi iu get Yi iu get div log ytrl add MULY mul 120 add moveto
        (dY/Y) jLs (u) ibLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 dYi iu get Yi iu get div log ytrl add MULY mul 200 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY dYi iu get Yi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul -3.     MULY mul lineto stroke}
           {iu log MULX mul -2.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div def
/Y100DYu dYi 100 get Yi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+2000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1e]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C05
%(dY/Y)
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = \050 ) show
TBL (1 + a) show ipK
(Y) jLs
(\051 / \050 t) bLs ipK
(Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3e]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1e]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2e]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs 
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3e]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4e]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5e]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1550 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C05_ALOG_DL_L

%*********************************************************************
/C06_ALOG_DL_Ln {%BEG C06_ALOG_DL_Ln
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y2ui i get put
        } for %i=1,100

Y_curve

%C06
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        0100 ytr 200 sub moveto
        (log[) bLs ((dY/Y)) jLs (u) ibLs (/) bLs
                   ((dY/Y)) jLs (u) ibLs (]=0) bLs
        /FY20 dYi 20 get Yi 20 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        0100 ytr 480 sub moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (dY/Y) jLs (u) ibLs (\051) bLs
        (=) bLs TBL dYu Yu div cvsshow3x

        xtr ytr translate %new cero point

tfz %tfz
/i1 18 def
[100] 0 setdash
/rYdY Yi i1 get dYi i1 get div
      Yu        dYu        div div e10D30 exp def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu dYi   1 get Yi   1 get div 
         dYu         Yu         div div def
/Y100DYu dYi 100 get Yi 100 get div 
         dYu         Yu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1f]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
%x00t 3000 add y00t ydel 1 mul sub moveto
%TBL (b=) show JNDB cvsshow3x
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

x00t y00t ydel 2 mul sub moveto
TBL (tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL ( sensitivity) showen
(\255Empfindlichkeit) showde

%C06
%Cr= log[(Y/dY)/(Yu/dYu)]
x00t y00t ydel 3 mul sub moveto
(\050) bLs
(dY/Y) jLs
TBL (\051 / \050) show
(dY) jLs (u) ibLs
(/) bLs
(Y) jLs (u) ibLs
TBL (\051 ) show

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [\050) show
TBL ( 1 + a) show ipK (Y) jLs
TBL (\051 / ) show (Y) jLs
TBL ( ] / [ \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 / ) show
(Y) jLs (u) ibLs
TBL ( ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([3f]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1f]) show

%2
x00t y00t ydel 1 mul sub moveto
(dY/Y) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(\050Y/Y) jLs (n) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2f]) show

%3
x00t y00t ydel 2 mul sub moveto
(dY/Y) jLs
TBL ( = c) show ipK
(Y) jLs (-1/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3f]) show

%4
x00t y00t ydel 3 mul sub moveto
(dY/Y) jLs
TBL ( = d) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (-1/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4f]) show

x00t y00t ydel 4 mul sub moveto
TBL (c = ) show cCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (d = ) show dCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5f]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0750 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C06_ALOG_DL_Ln

%*********************************************************************
/C07_ALOG_L_DL {%BEG C07_ALOG_L_DL

/xtr 2000 def
ifunc 0 eq {/ytr -1000 def} if
ifunc 1 eq {/ytr  0000 def} if
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
%0 not available
1 1 100 {/i exch def %i=1,100
         Yx0i i Y30i i get put
        } for %i=1,100

Y_curve

%C07
/x0 0200 def
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        xtr neg ytr neg translate %new cero point
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY Yi iu get dYi iu get div def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
%different for LABJND (ifunc=0) and CIELAB (ifunc=1)
ifunc 0 eq {iu log MULX mul 1.     MULY mul lineto stroke}
           {iu log MULX mul 0.     MULY mul lineto stroke} ifelse
[ ] 0 setdash
tfn


ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div def
/Y100DYu Yi 100 get dYi 100 get div def
%0 Y001DYu log ytrl add MULY mul moveto %1 add because y-cero point=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash
tfn %tfw

%C07
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
%L*= (t/a) * ln (1 + a Y)

/x00t 0500 def
/x00e 4300 def
/y00t 2950 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1g]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%C07
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = \050) show
TBL (1 + a) show ipK (Y) jLs
(\051 / \050 t) bLs ipK (Y) jLs (\051) bLs
x00e y00t ydel 3 mul sub moveto
TBL ([3g]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1g]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2g]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs 
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3g]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4g]) show

x00t y00t ydel 3.9 mul sub 50 add moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5g]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0800 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C07_ALOG_L_DL

%*********************************************************************
/C08_ALOG_L_DLn {%BEG C08_ALOG_L_DLn
/xtr 2000 def
/ytr 1000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point
1 1 100 {/i exch def %i=1,100
         Yx0i i Y3ui i get put
        } for %i=1,100

Y_curve

%C08
/x0 0400 def
        xtr neg ytr neg translate %new cero point
        x0 ytr 100 add moveto
        (log[) bLs ((Y/dY)) jLs (u) ibLs (/) bLs
                   ((Y/dY)) jLs (u) ibLs (]=0) bLs
        /FY20 Yi 20 get dYi 20 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (, m) jLs (u) ibLs (=) bLs TBL
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x
        
        x0 ytr 350 add moveto
        (Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        (, dY) jLs (u) ibLs
        (=) bLs TBL dYu cvsshow2x
        (, \050) bLs (Y/dY) jLs (u) ibLs (\051) bLs
        (=) bLs TBL Yu dYu div 0.5 add cvishow %round
        0 0 0 setrgbcolor

        xtr ytr translate %new cero point

tfz %tfz
[100] 0 setdash
/rYdY 1 def
-2.    MULX mul rYdY log MULY mul moveto
iu log MULX mul rYdY log MULY mul lineto
iu log MULX mul -1.      MULY mul lineto stroke
[ ] 0 setdash
tfn

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

tfn %tfw
/Y001DYu Yi   1 get dYi   1 get div 
         Yu         dYu         div div def
/Y100DYu Yi 100 get dYi 100 get div 
         Yu         dYu         div div def
%0 Y001DYu log ytrl add MULY mul moveto %log-shift=1 for ytr=+1000
%0 Y100DYu log ytrl add MULY mul lineto stroke
tfg
[100] 0 setdash
0 Y001DYu log ytrl add MULY mul moveto
0 Y100DYu log ytrl add MULY mul lineto stroke
[ ] 0 setdash

%C08
/y0 2400 y0del sub def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
%L*= (t/a) * ln (1 + a Y)

/x00t 0400 def
/x00e 4300 def
/y00t 2900 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 LABJND
x00t y00t moveto
(L*) jLs (85,2) ibLs
(= \050) bLs (t/a) bLs (\051) bLs
TBL ( ln \050 1 + ) show TBL (a) show ipK 
(Y) jLs (\051) bLs
x00e y00t moveto
TBL ([1h]) show

x00t 0000 add y00t ydel 1 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x00t 1000 add y00t ydel 1 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x00t 2000 add y00t ydel 1 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

x00t y00t ydel 2 mul sub moveto
TBL
(tristimulus value ) showen
(Hellbezugswert\255) showde
(Y) jLs
TBL
( contrast) showen
(\25Kontrast) showde

%Cr= (Y/dY)/(Yu/dYu)
x00t y00t ydel 3 mul sub moveto
(\050) bLs (Y/dY) jLs
TBL (\051 / \050) show
(Y) jLs (u) ibLs
(dY) jLs (u) ibLs (\051) bLs

x00t 300 add y00t ydel 4 mul sub moveto
TBL ( = [ ) show (Y) jLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs TBL (\051 ]) show
TBL ( / [ ) show (Y) jLs (u) ibLs
TBL ( / \050) show
TBL ( 1 + a) show ipK (Y) jLs (u) ibLs
TBL (\051 ]) show
x00e y00t ydel 4 mul sub moveto
TBL ([4h]) show
} if %infunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t moveto
(L*) jLs
TBL (= 116 ) show
(\050Y/Y) jLs (n) ibLs (\051) bLs
(1/3) ebLs
TBL ( - 16  ) show
(\050Y) jLs (n) ibLs
TBL (=100, 1) show SL ( \243 ) show
(Y) jLs
SL ( \243 ) show TBL (100\051) show
x00e y00t moveto
TBL ([1h]) show

%2
x00t y00t ydel 1 mul sub moveto
(Y/dY) jLs TBL ( = ) show
TBL (\0503/116\051) show ipK
(Y) jLs (n) ibLs (1/3) ebLs
(Y) jLs (2/3) ebLs
x00e y00t ydel 1 mul sub moveto
TBL ([2h]) show

%3
x00t y00t ydel 2 mul sub moveto
(Y/dY) jLs
TBL ( = e) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 2 mul sub moveto
TBL ([3h]) show

%4
x00t y00t ydel 3 mul sub moveto
(Y/dY) jLs
TBL ( = f) show ipK
(\050Y/Y) jLs (u) ibLs
(\051) bLs (2/3) ebLs
x00e y00t ydel 3 mul sub moveto
TBL ([4h]) show

x00t y00t ydel 3.9 mul sub moveto
TBL (e = ) show eCIE cvsshow3x
x00t 2000 add y00t ydel 4 mul sub moveto
TBL (f = ) show fCIE cvsshow3x
x00e y00t ydel 4 mul sub moveto
TBL ([5h]) show

} if %ifunc=1 CIELAB

} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 0850 def
x0 y0 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
x0 y0 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
x0 y0 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
x0 y0 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde

} def %END C08_ALOG_L_DL

%****************************************************************
tfb
/xtfb 040 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs ifunc 0 eq {(85,2,) ibLs} if
               (u) ibLs TBL
              } if

xchartl 02 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs
              } if

xchartl 03 eq {100 3200 xtfb sub moveto
               (D) sKs (Y) jLs (/) bLs
               (D) sKs (Y) jLs (u) ibLs
              } if

xchartl 04 eq {100 3200 xtfb sub moveto
               (S) jLs (r) ibLs (=) bLs TBL
               (D) sKs (Y/Y) jLs
              } if

xchartl 05 eq {100 3200 xtfb sub moveto
               (S) jLs (r)  ibLs (/) bLs (S) jLs (ru) ibLs
               (=\050) bLs (D) sKs (Y/Y) jLs (\051/\050) bLs
               (D) sKs (Y/Y) jLs (\051) bLs (u) ibLs
              } if

xchartl 06 eq {100 3200 xtfb sub moveto
               (C) jLs (r) ibLs
               (=) bLs (Y/) jLs (D) sKs (Y) jLs
              } if

xchartl 07 eq {100 3200 xtfb sub moveto
               (C) jLs (r)  ibLs (/) bLs
               (C) jLs (ru) ibLs
               (=\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051/\050) bLs
               (Y) jLs (/) bLs (D) sKs (Y) jLs (\051) bLs (u) ibLs
              } if
tfn

%**************************************************************
xchartl 00 eq {C01_ALOG_L*} if
xchartl 01 eq {C02_ALOG_L*DL*u} if
xchartl 02 eq {C03_ALOG_DL} if
xchartl 03 eq {C04_ALOG_DLn} if
xchartl 04 eq {C05_ALOG_DL_L} if
xchartl 05 eq {C06_ALOG_DL_Ln} if
xchartl 06 eq {C07_ALOG_L_DL} if
xchartl 07 eq {C08_ALOG_L_DLn} if

%END C01_C08**********************************************

%********************************************************

xtr0 neg ytr0 neg translate
%**************************************************************

%special space for 'xm03'PROZ0.COM 2x before/after xchartl
%  xchartl    0 eq {  100 neg 13000 neg translate} if
%  xchartl    1 eq { 5700 neg 13000 neg translate} if
%  xchartl    2 eq {  100 neg 08750 neg translate} if
%  xchartl    3 eq { 5700 neg 08750 neg translate} if

%  xchartl    4 eq {  100 neg  4500 neg translate} if
%  xchartl    5 eq { 5700 neg  4500 neg translate} if
%  xchartl    6 eq {  100 neg  0250 neg translate} if
%  xchartl    7 eq { 5700 neg  0250 neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

%} for %ioute=0,1
             
%%Trailer

%line 269

%%EndDocument
EndEPSF grestore gsave

showpage
grestore

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
219 MM 06 MM sub SHAr add 020 MM translate 12 /Times-ISOL1 FS -9 MM -7 MM  moveto ( ) show
  10 /Times-ISOL1 FS  53 MM 1 MM moveto ( ) show 1 1 scale  -77 -91 translate
%%BeginDocument: Bild 28

%line 499
%!PS-Adobe-3.0 EPSF-3.0 hgb61-8N
%%BoundingBox: 70 85 246 206

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def
%%EndProlog
gsave

/ioutx 0 def
ioutx 1 eq {%ioutx=1

4 /Times-Roman FS
72 86 moveto
     (hgb61-8N) show

72 90 translate

0.01 MM dup scale
20 setlinewidth
/xwidth 6100 def
/ywidth 4000 def
1 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath fill
0 setgray
0 0  moveto xwidth 0 rlineto 0 ywidth rlineto
        xwidth neg 0 rlineto closepath stroke

} if %ioutx=1

grestore
showpage

%%Trailer


%%EndDocument
EndEPSF grestore gsave

BeginEPSF
219 MM 080 MM add 008 MM translate %80 MM Breite von TestStreifen
  10 /Times-ISOL1 FS  53 MM 1 MM moveto () show 1 1 scale -77 21 MM sub -91 translate
%%BeginDocument: Bild 29 Teststreifen Ueberlaenge

%line 509

%%EndDocument
EndEPSF grestore gsave

BeginEPSF
-0.0 MM -0.0 MM translate %xy-Verschiebung Rechteckrahmen nach innen%

%%BeginDocument: Bild 30 %Rechteckrahmen

%line 519
%!PS-Adobe-3.0 EPSF-3.0 Frame arround with Internet text DG02 20070101
%%BoundingBox: 0 0 598 845

%%EndProlog
gsave

/lanind 1 def
/lantex [(G) (E) (S) (N) (I) (J) (M)] def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind eq {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind eq {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind eq {show} {pop} ifelse} bind def
/showea {1 lanind le {show} {pop} ifelse} bind def

/lanind1 01 def /lanind2 01 def /lanindd 01 def
/colorm1 00 def /colorm2 00 def /colormd 01 def
/deintp1 00 def /deintp2 00 def /deintpd 01 def
/xcolor1 00 def /xcolor2 00 def /xcolord 01 def
/xchart1 00 def /xchart2 00 def /xchartd 01 def
/pchart1 00 def /pchart2 00 def /pchartd 01 def
/colsep1 00 def /colsep2 00 def /colsepd 01 def
/pmetam1 00 def /pmetam2 00 def /pmetamd 01 def

/lanindf where {pop /lanind1 lanindf def /lanind2 lanindf def
                    /lanindd laninddf def} if
/colormf where {pop /colorm1 colormf def /colorm2 colormf def
                    /colormd colormdf def} if
/deintpf where {pop /deintp1 deintpf def /deintp2 deintpf def
                    /deintpd deintpdf def} if
/xcolorf where {pop /xcolor1 xcolorf def /xcolor2 xcolorf def
                    /xcolord xcolordf def} if
/xchartf where {pop /xchart1 xchartf def /xchart2 xchartf def
                    /xchartd xchartdf def
                    /xchartm xchart2f xchart1f sub 1 add def}
               {/xchartm 1 def} ifelse
/xchart3f where {pop /xchart3 xchart3f def}
                {/xchart3 1 def} ifelse
/xchart4f where {pop /xchart4 xchart4f def}
                {/xchart4 0 def} ifelse
/pchartf where {pop /pchart1 pchartf def /pchart2 pchartf def
                    /pchartd pchartdf def} if
/colsepf where {pop /colsep1 colsepf def /colsep2 colsepf def
                    /colsepd colsepdf def} if
/pmetamf where {pop /pmetam1 pmetamf def /pmetam2 pmetamf def
                    /pmetamd pmetamdf def} if

/lanind lanind1 def %
/colorm colorm1 def %
/deintp deintp1 def %
/xcolor xcolor1 def %
/xchart xchart1 def %
/pchart pchart1 def %
/colsep colsep1 def %
/pmetam pmetam1 def %

/GSS$ where {pop /LSS$ GSS$ def}
            {/LSS$ (1) def} ifelse
/GSC$ where {pop /LSC$ GSC$ def}
            {/LSC$ (n) def} ifelse
/GSX$ where {pop /LSX$ GSX$ def}
            {/LSX$ (0) def} ifelse
/GSY$ where {pop /LSY$ GSY$ def}
            {/LSY$ (0) def} ifelse
/GEX$ where {pop /LEX$ GEX$ def}
            {/LEX$ (p.ps./pdf) def} ifelse
/GEY$ where {pop /LEY$ GEY$ def}
            {/LEY$ (p.dat) def} ifelse
/IMES 0 def
/i*ptrsc 0 def

gsave

0 setgray

1.0 1.0  scale

0.0 MM 1.0 MM translate %page shift down

0.15 MM setlinewidth

/x 20 array def
/y 20 array def
/d 20 array def

/x [000 296 296 000  002 294 294 002  005 291 291 005 %speziell
    006 290 290 006  008 288 288 008 ] def
/y [000 000 210 210  002 002 208 208  005 005 205 205 %speziell
    006 006 204 204  008 008 202 202 ] def
/d [060 017 -60 -17  058 015 -58 -15  056 013 -56 -13
    054 011 -54 -11  052 009 -52 -09 ] def

colorm 0 eq deintp 0 eq and {/Txx (d) def  /Fxx (d) def} if %colorm=0, deintp=0
colorm 0 eq deintp 1 eq and {/Txx (e) def  /Fxx (e) def} if %colorm=0, deintp=1
colorm 1 eq deintp 0 eq and {/Txx (dd) def /Fxx (d) def} if %colorm=1, deintp=0
colorm 1 eq deintp 1 eq and {/Txx (de) def /Fxx (e) def} if %colorm=1, deintp=1
xchart 0 eq {/Txx (-) def /Fxx (-) def} if

xchart 1 ge {%xchart>=1

/i0 12 def
/i1 i0 1 add def /i2 i0 2 add def /i3 i0 3 add def
2.5 MM /Times-ISOL1 FS
x i0 get MM 40 MM add y i0 get MM 1 MM sub moveto
lanind cvishow (-) show
colorm cvishow
deintp cvishow
xcolor cvishow
xchart cvishow
pchart cvishow
colsep cvishow (-F) show pmetam cvishow

} if %xchart>=1

/xlu 017 MM def /ylu 017 MM def
/xro 279 MM def /yro 193 MM def
/xlo 017 MM def /ylo 193 MM def
/xru 279 MM def /yru 017 MM def

/xmo xlo xro xlo sub 0.5 mul add def
/ymo yro 1 MM sub def
xmo 1 MM sub ymo moveto 2 MM 0 rlineto stroke
xmo ymo 1 MM sub moveto 0 1 MM rlineto stroke

xlu 8 MM sub ylu moveto  16 MM 0 rlineto stroke
xlu ylu 8 MM sub moveto 0  16 MM rlineto stroke
xro 8 MM add yro moveto -16 MM 0 rlineto stroke
xro yro 8 MM add moveto 0 -16 MM rlineto stroke

xru 8 MM sub yru moveto  16 MM 0 rlineto stroke
xru yru 8 MM sub moveto 0  16 MM rlineto stroke
xlo 8 MM add ylo moveto -16 MM 0 rlineto stroke
xlo ylo 8 MM add moveto 0 -16 MM rlineto stroke

1 2 7 {/i exch def %Zentrierkreise
xlu ylu i MM 0 360 arc stroke
xro yro i MM 0 360 arc stroke
xru yru i MM 0 360 arc stroke
xlo ylo i MM 0 360 arc stroke
      } for %i

12 4 16 {/i exch def /i0 i def %i=0,16
%0 4 16 {/i exch def /i0 i def %i=0,16
        /i1 i0 1 add def /i2 i0 2 add def /i3 i0 3 add def

i 16 eq {0.30 MM setlinewidth} {0.15 MM setlinewidth} ifelse

0 setgray
x i0 get MM y i0 get MM moveto x i1 get MM y i1 get MM lineto
x i2 get MM y i2 get MM lineto x i3 get MM y i3 get MM lineto
x i0 get MM y i0 get MM lineto stroke

i 16 eq {6 /Times-ISOL1 FS
         /x00 67 def /xdif 32 def /y0o 202.3 def /y0u 6.3 def
         /x0l 6.1 def /x0r 288 def /y00 22 def /ydif 32 def
         x00 xdif 0 mul add MM y0o MM moveto (V) show
         x00 xdif 0 mul add MM y0u MM moveto (C) show
         x00 xdif 1 mul add MM y0o MM moveto (L) show
         x00 xdif 1 mul add MM y0u MM moveto (M) show
         x00 xdif 2 mul add MM y0o MM moveto (O) show
         x00 xdif 2 mul add MM y0u MM moveto (Y) show
         x00 xdif 3 mul add MM y0o MM moveto (Y) show
         x00 xdif 3 mul add MM y0u MM moveto (O) show
         x00 xdif 4 mul add MM y0o MM moveto (M) show
         x00 xdif 4 mul add MM y0u MM moveto (L) show
         x00 xdif 5 mul add MM y0o MM moveto (C) show
         x00 xdif 5 mul add MM y0u MM moveto (V) show

         x0l MM y00 ydif 0 mul add MM moveto (V) show
         x0r MM y00 ydif 0 mul add MM moveto (C) show
         x0l MM y00 ydif 1 mul add MM moveto (L) show
         x0r MM y00 ydif 1 mul add MM moveto (M) show
         x0l MM y00 ydif 2 mul add MM moveto (O) show
         x0r MM y00 ydif 2 mul add MM moveto (Y) show
         x0l MM y00 ydif 3 mul add MM moveto (Y) show
         x0r MM y00 ydif 3 mul add MM moveto (O) show
         x0l MM y00 ydif 4 mul add MM moveto (M) show
         x0r MM y00 ydif 4 mul add MM moveto (L) show
         x0l MM y00 ydif 5 mul add MM moveto (C) show
         x0r MM y00 ydif 5 mul add MM moveto (V) show
        } if

       } for %i=0,16

0 1 10 {/j0 exch def /j1 j0 1 add def %j0

         j0 0 eq {tzccmy0* setcmykcolor} if
         j0 1 eq {0 setgray} if
         j0 2 eq {tzmcmy0* setcmykcolor} if
         j0 3 eq {0 setgray} if
         j0 4 eq {tzycmy0* setcmykcolor} if
         j0 5 eq {0 setgray} if
         j0 6 eq {tzocmy0* setcmykcolor} if
         j0 7 eq {0 setgray} if
         j0 8 eq {tzlcmy0* setcmykcolor} if
         j0 9 eq {0 setgray} if
         j0 10 eq {tzvcmy0* setcmykcolor} if

12 4 16 {/i exch def /i0 i def %i=0,16
%0 4 16 {/i exch def /i0 i def %i=0,16
        /i1 i0 1 add def /i2 i0 2 add def /i3 i0 3 add def

i 16 eq {0.30 MM setlinewidth} {0.15 MM setlinewidth} ifelse

x i0 get d i0 get add 16 j0 mul add MM y i0 get MM moveto
x i0 get d i0 get add 16 j1 mul add MM y i0 get MM lineto stroke

x i1 get MM y i1 get d i1 get add 16 j0 mul add MM moveto
x i1 get MM y i1 get d i1 get add 16 j1 mul add MM lineto stroke

x i2 get d i2 get add 16 j0 mul sub MM y i2 get MM moveto
x i2 get d i2 get add 16 j1 mul sub MM y i2 get MM lineto stroke

x i3 get MM y i3 get d i3 get add 16 j0 mul sub MM moveto
x i3 get MM y i3 get d i3 get add 16 j1 mul sub MM lineto stroke

       } for %i=0,16

       } for %j0

0.15 MM setlinewidth
/s 7 MM def /s1 8 MM def /s5 36 MM def
16 1 20 {/j exch def /j0 j 16 sub def %j=16,20
         /ix0 xlu  8 MM add j0 7 MM mul add def /iy0 ylu 8 MM sub def

0 1 3 {/ij exch def %ij=0,3

 ij 0 eq {/ix0 xlu  8 MM add j0 7 MM mul add def /iy0 ylu 8 MM sub def} if
 ij 1 eq {/ix0 xru 43 MM sub j0 7 MM mul add def /iy0 yru 8 MM sub def} if
 ij 2 eq {/ix0 xlo  8 MM add j0 7 MM mul add def /iy0 ylo 1 MM add def} if
 ij 3 eq {/ix0 xro 43 MM sub j0 7 MM mul add def /iy0 yro 1 MM add def} if

i*ptrsc 0 eq i*ptrsc 2 eq or {%i*ptrsc=0,2 cmy0* setcmykcolor
              j 16 eq {tzan j get dup dup 0 setcmykcolor
                       ix0 0.5 MM sub iy0 0.5 MM sub s5 s1 rec fill} if
              tzan j get dup dup 0 setcmykcolor
              ix0 iy0 s s  rec fill
             } if %i*ptrsc=0,2

i*ptrsc 1 eq i*ptrsc 3 eq or {%i*ptrsc=1,3 www* setrgbcolor
              j 16 eq {1 tzan j get 1 sub dup dup setrgbcolor %N
                       ix0 0.5 MM sub iy0 0.5 MM sub s5 s1 rec fill} if
              1 tzan j get sub dup dup setrgbcolor %N
              ix0 iy0 s s  rec fill
             } if %i*ptrsc=1,3

i*ptrsc 4 eq i*ptrsc 5 eq or {%i*ptrsc=4,5
  [/CIEBasedABC <<    %Farbraum und Grenzen fuer D65
  /RangeABC [0 100 -128 127 -128 127]
  /DecodeABC [{16 add 116 div} bind {500 div} bind {200 div} bind]
  /MatrixABC [1 1 1 1 0 0 0 0 -1]
  /DecodeLMN
    [{dup 6 29 div ge {dup dup mul mul}
     {4 29 div sub 108 841 div mul} ifelse 0.9505 mul} bind
     {dup 6 29 div ge {dup dup mul mul}
     {4 29 div sub 108 841 div mul} ifelse} bind
     {dup 6 29 div ge {dup dup mul mul}
     {4 29 div sub 108 841 div mul} ifelse 1.0890 mul} bind]
    /WhitePoint  [0.9505 1 1.089]                %CIEXYZ fuer D65
 >>] setcolorspace

 j 16 eq {tznLAB* 0 get tzwLAB* 0 get tznLAB* 0 get sub 0.25 j0 mul mul add
          tznLAB* 1 get tzwLAB* 1 get tznLAB* 1 get sub 0.25 j0 mul mul add
          tznLAB* 2 get tzwLAB* 2 get tznLAB* 2 get sub 0.25 j0 mul mul add
          setcolor %N
          ix0 0.5 MM sub iy0 0.5 MM sub s5 s1 rec fill} if
          tznLAB* 0 get tzwLAB* 0 get tznLAB* 0 get sub 0.25 j0 mul mul add
          tznLAB* 1 get tzwLAB* 1 get tznLAB* 1 get sub 0.25 j0 mul mul add
          tznLAB* 2 get tzwLAB* 2 get tznLAB* 2 get sub 0.25 j0 mul mul add
          setcolor %N
          ix0 iy0 s s  rec fill
             } if %i*ptrsc=4,5

i*ptrsc 6 eq {%i*ptrsc=6 000n* setcmykcolor
              j 16 eq {0 0 0 tzan j get setcmykcolor
                       ix0 0.5 MM sub iy0 0.5 MM sub s5 s1 rec fill} if
              0 0 0 tzan j get setcmykcolor
              ix0 iy0 s s  rec fill
             } if %i*ptrsc=6

i*ptrsc 7 eq {%i*ptrsc=7 w* setgray
              j 16 eq {1 tzan j get sub setgray
                       ix0 0.5 MM sub iy0 0.5 MM sub s5 s1 rec fill} if
              1 tzan j get sub setgray
              ix0 iy0 s s  rec fill
             } if %i*ptrsc=7

      } for %ij=0,3

        } for %j=16,20

0 setgray
018 MM 008.2 MM moveto 6 /Times-Roman FS (-8) show
018 MM 006.2 MM moveto 6 /Times-Roman FS (-6) show

276 MM 008.2 MM moveto 6 /Times-Roman FS (-8) show
276 MM 006.2 MM moveto 6 /Times-Roman FS (-6) show

018 MM 202.2 MM moveto 6 /Times-Roman FS (-8) show
018 MM 204.2 MM moveto 6 /Times-Roman FS (-6) show

276 MM 202.2 MM moveto 6 /Times-Roman FS (-8) show
276 MM 204.2 MM moveto 6 /Times-Roman FS (-6) show

/10TIN {10 /Times-ISOL1 FS} def
/10TRN {10 /Times-Roman FS} def
/12TIN {12 /Times-ISOL1 FS} def
/12TRN {12 /Times-Roman FS} def

/10TII {10 /TimesI-ISOL1 FS} def
/10TRI {10 /Times-Italic FS} def
/12TII {12 /TimesI-ISOL1 FS} def
/12TRI {12 /Times-Italic FS} def

/10TIB {10 /TimesB-ISOL1 FS} def
/10TRB {10 /Times-Bold FS} def
/12TIB {12 /TimesB-ISOL1 FS} def
/12TRB {12 /Times-Bold FS} def

/10TIBI {10 /TimesBI-ISOL1 FS} def
/10TRBI {10 /Times-BoldItalic FS} def
/12TIBI {12 /TimesBI-ISOL1 FS} def
/12TRBI {12 /Times-BoldItalic FS} def

/12RN  {12 /Times-Roman FS} bind def      /10RN  {10 /Times-Roman FS} bind def
/12RI  {12 /Times-Italic FS} bind def     /10RI  {10 /Times-Italic FS} bind def
/12RB  {12 /Times-Bold FS} bind def       /10RB  {10 /Times-Bold FS} bind def
/12RBI {12 /Times-BoldItalic FS} bind def /10RBI {10 /Times-BoldItalic FS} bind def
/12TN  {12 /Times-ISOL1 FS} bind def      /10TN  {10 /Times-ISOL1 FS} bind def
/12TI  {12 /TimesI-ISOL1 FS} bind def     /10TI  {10 /TimesI-ISOL1 FS} bind def
/12TB  {12 /TimesB-ISOL1 FS} bind def     /10TB  {10 /TimesB-ISOL1 FS} bind def
/12TBI {12 /TimesBI-ISOL1 FS} bind def    /10TBI {10 /TimesBI-ISOL1 FS} bind def

%special
/10TIN_10  {10TIN 0 -2 rmoveto 
            xcolor 1 eq {(10) show} if 0 2 rmoveto} def
/10TINK10 {10TIN 0 -2 rmoveto
           xcolor 1 eq {(,10) show} if 0 2 rmoveto} def
/10SN {10 /Symbol FS} def
/12SN {12 /Symbol FS} def

/TELi0 8 array def
/TELi1 8 array def
/TELi  8 array def
/TELi0 [(P65) (P60) (P55) (P50) (P45) (P40) (P35) (P30)] def %7 illumin.
/TELi1 [(D65) (D50) (P40) (A00) (E00) (C00) (P00) (Q00)] def %7 illumin.

/xchart8 0 def %xchart8=0: Pxx, xchart8=1: Dxx
0 1 7 {/i exch def %i=0,7
xchart8 0 eq {%xchart8=0
              TELi i TELi0 i get put
             }%xchart8=0
             {%xchart8=1
              TELi i TELi1 i get put
             } ifelse %xchart8=1
       } for %i=0,7

/xchart40 0 def %0:CIELAB, 1:LABJND
/xchart41 0 def %0:log, %1:linear

0 setgray
12TIN
61 MM 13.5 MM  moveto
(TUB\255Pr\374fvorlage hgb6; ) showde
(TUB\255test chart hgb6; ) showen
(gr\341fico TUB\255hgb6; ) showes
(TUB\255test graphique hgb6; ) showfr
(grafico TUB\255hgb6; ) showit
(TUB\255test chart hgb6; ) showjp



12TIN
xchart40 0 eq {%xchart40=0
(Calculated for the CIELAB colour\255difference formula, see ) showea
(Berechnet nach der CIELAB\255Farbabstandsformel, siehe ) showde
(ISO/CIE 11664\2554) show
           } if %xchart40=0

xchart40 1 eq {%xchart40=1
(Calculated for the LABJND colour\255difference formula, see ) showea
(Berechnet nach der LABJND\255Farbabstandsformel, siehe ) showde
(CIE 230:2019) show
           } if %xchart40=1
    
61 MM 09.5 MM  moveto
12TIN
xchart41 0 eq {(log) show} if
xchart41 1 eq {(linear) show} if
([lightness ) showea
([Helligkeit ) showde
12TII
(L*, ) show
12TIN
(threshold ) showea
(Schwelle ) showde
12SN
(D) show
12TII
(Y, ) show
12TIN
(sensitivity ) showea
(Empfindlichkeit ) showde
12SN
(D) show
12TII
(Y / Y, ) show
12TIN
(contrast ) showea
(Kontrast ) showde
12TII
(Y / ) show
12SN
(D) show
12TII
(Y, ) show
12TIN
(unnormalized and normalized]) showea
(unnormiert und normiert]) showde

 62 MM 198.5 MM  moveto
12RN tfb (http://farbe.li.tu-berlin.de/hgb6/hgb6l) show 12TN
(0) show %
LSC$ show LEX$ show tfn
(; only vector graphic VG) showen 
(; nur Vektorgrafik VG) showde

%1 setgray %start white and unvisible
(; ) show
xchart 0 eq {
(Start\255Ausgabe) showde
(start output) showen
(comience salida) showes
(sortie de production) showfr
(cominciare l'uscita) showit
(start output) showjp
           } if

 62 MM 194 MM  moveto
(Siehe separate Bilder dieser Seite: ) showde
(see separate images of this page: ) showen
(vea archivos semejantes: ) showes
(voir des fichiers similaires: ) showfr
(vedere dei file simili: ) showit
(see similar files: ) showjp
12RN tfb (http://farbe.li.tu-berlin.de/hgb6/hgb6.htm) show tfn 12TN

 16 MM 185 MM moveto
-90 rotate
(Siehe \344hnliche Dateien der ganzen Serie: ) showde
(see similar files of the whole serie: ) showen
(vea archivos semejantes: ) showes
(voir des fichiers similaires de serie: ) showfr
(vedere dei file simili: ) showit
(see similar files: ) showjp
12RN tfb (http://farbe.li.tu-berlin.de/hgbs.htm) show tfn 12TN
90 rotate

 12 MM 185 MM moveto
-90 rotate
(Technische Information: ) showde
(technical information: ) showen
(informaci\363n t\351cnica: ) showes
(informations techniques: ) showfr
(informazioni tecniche: ) showit
(technical information: ) showjp
12RN tfb (http://farbe.li.tu-berlin.de) show tfn 12TN
( oder ) showde
( or ) showen
( o ) showes
( ou ) showfr
( o ) showit
( or ) showjp
12RN tfb (http://color.li.tu-berlin.de) show tfn 12TN
 90 rotate

281 MM 185 MM moveto
-90 rotate
(TUB\255Registrierung: 20241001\255hgb6/hgb6l) showde
(TUB registration: 20241001\255hgb6/hgb6l) showen
(TUB matr\355cula: 20241001\255hgb6/hgb6l) showes
(TUB enregistrement: 20241001\255hgb6/hgb6l) showfr
(TUB iscrizione: 20241001\255hgb6/hgb6l) showit
(TUB registration: 20241001\255hgb6/hgb6l) showjp
(0) show %
LSC$ show LEX$ show
90 rotate

281 MM 74 MM moveto
-90 rotate
(TUB\255Material: Code=rha4ta) showde
(TUB material: code=rha4ta) showen
(TUB material: code=rha4ta) showes
(TUB mat\351riel: code=rha4ta) showfr
(TUB materiale: code=rha4ta) showit
(TUB material: code=rha4ta) showjp
90 rotate

277 MM 185 MM moveto
-90 rotate
/cvishow {cvi 6 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 7 string cvs show} def

( Anwendung f\374r Beurteilung und Messung ) showde
( application for evaluation and measurement ) showen
( aplicaci\363n para la medida ) showes
( application pour la mesure ) showfr
( la domanda per la misura ) showit
( application for measurement ) showjp

(von Display\255 oder Druck\255Ausgabe) showde
(of display or print output) showen
(de display output) showes
(de sortie sur \350cran) showfr
(di stampa di display) showit
(of display output) showjp

90 rotate

/i0 8 def
/i1 i0 1 add def /i2 i0 2 add def /i3 i0 3 add def
0.30 MM setlinewidth
0 setgray
x i0 get MM y i0 get MM moveto x i1 get MM y i1 get MM lineto
x i2 get MM y i2 get MM lineto x i3 get MM y i3 get MM lineto
x i0 get MM y i0 get MM lineto stroke

grestore
gsave

%**********************************************************

%%Trailer

%%EndDocument
EndEPSF grestore gsave

showpage
grestore

%} for %colsepf=0,1

%} for %pchartf=0,0

%} for %xchartf=0,0

%} for %xcolorf=0,1

%} for %deintpf=0,1

%} for %colormf=0,1

%} for %lanindf=0,0

%%Trailer