%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/heb5/heb50-3a
%%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/heb5/heb5.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

/Yi   404 array def %101(W)+3*101(R,G,B)
/dYi  404 array def
/L*i  404 array def
/L*iW 404 array def %needed?
/L*iR 404 array def
/L*iG 404 array def
/L*iB 404 array def
/YnW 100 def %CIELAB
/YnR  21 def
/YnG  72 def
/YnB  07 def

/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
/MULX 1000 def
/MULY 1000 def

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

/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
tfw

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

%*************************************************
/Yi_L*i_dYi_Cab {%BEG Yi_L*i_dYi_Cab C=CIELAB
%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

0 1 100 {/i exch def %i=0,100
         /ik i k 101 mul add def
         k 0 eq {1 1 1 setrgbcolor
                 Yi  ik i YnW mul 100. div put
                 L*i ik Yi ik get YnW div e10D30 exp 116 mul 16 sub put
                 dYi ik Yi ik get YnW div e20D30 exp c30 mul
                 100 mul 116 div put
                } if
         k 1 eq {1 0 0 setrgbcolor
                 Yi  ik i YnR mul 100. div put
                 L*i ik Yi ik get YnR div e10D30 exp 116 mul 16 sub put
                 dYi ik Yi ik get YnR div e20D30 exp c30 mul
                 100 mul 116 div put
                } if
         k 2 eq {0 1 0 setrgbcolor
                 Yi  ik i YnG mul 100. div put
                 L*i ik Yi ik get YnG div e10D30 exp 116 mul 16 sub put
                 dYi ik Yi ik get YnG div e20D30 exp c30 mul
                 100 mul 116 div put
                } if
         k 3 eq {0 0 1 setrgbcolor
                 Yi  ik i YnB mul 100. div put
                 L*i ik Yi ik get YnB div e10D30 exp 116 mul 16 sub put
                 dYi ik Yi ik get YnB div e20D30 exp c30 mul
                 100 mul 116 div put
                } if
        } for %i=0,100
} bind def %END Yi_L*i_dYi_Cab C=CIELAB

%*************************************************
/Yi_L*i_dYi_C00 {%BEG Yi_L*i_dYi_C00 C00=CIEDE2000
%only for k=0, no L* definition possible
%identical as for CIELAB
%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

%CIEDE2000
%L'=L*
%delta_L00=delta_L'/SL

%SL2  = 1 + [0,015 (L'q - 50)**2]/[20 + (L'q - 50)**2]**(1/2)
%    = 1 + [0,015 L's] / [20 + L's]**(1/2)
%L's = (L'q - 50)**2
%L'1 = 116*(Y+d_Y)/100)**(1/3)-16
%L'0 = 116*(Y     /100)**(1/3)-16
%L'q = 0.5 {L'1 + L'0}
%range 1 < Y < 100
%log range 0 < log Y < 2
%delta_E00 = delta_L' / SL
%for delta_E00=1:
%delta L'/ SL2 = delta L* / SL2 = 1

0 1 100 {/i exch def %i=0,100
         Yi  i i     put
         dYi i 0.01 put %default
         L*i i i     put %default
        } for %i=0,100

1 1 100 {/i exch def %i=1,100 for Y
         /d_Y0 0.005 def %up to 0.999
         /d_Ye 0.005 def
         /iEND 0 def
         1 1 999 {/j exch def %j=1,999 for delta_Y
                  iEND 0 eq {%iEND=0
                  /d_Y d_Y0 j mul def
                  /L'1 i d_Y add 100 div 0.3333 exp 116 mul 16 sub def
                  /L'0 i         100 div 0.3333 exp 116 mul 16 sub def
                  /L'q L'1 L'0 add 0.5 mul def
                  /L's L'q 50 sub 2.0 exp def
%SL2    = 1 + [0,015 L's] / [20 + L's]**(1/2)
                  /SL2 0.015 L's mul
                      20 L's add 0.5 exp
                      div 1 add def
                  L'1 L'0 sub SL2 div 1 ge {/d_Ye d_Y def /iEND 1 def} if
                              } if %iEND=0
                 } for %j=1,999

          Yi  i i    put
          dYi i d_Ye put
         } for %i=1,100

} bind def %END Yi_L*i_dYi_C00 C00=CIEDE2000

%***************************************************
%EMPTY
/Yi_L*i_dYi_S_0 {%BEG Yi_L*i_dYi_S_0 S=LINYAB
} bind def %END Yi_L*i_dYi_S_0 S=LINYAB

%***************************************************
/Yi_L*i_dYi_L85 {%BEG Yi_L*i_dYi_L85 L85=LABJND 1985
%LABJND
/YYL 0.001 def
/YFL 0.000001 def
/Yu 18. def
%dY = (s + q * Y)/c
/JNDC 1.5 def %c
/JNDS 0.0170 def %s
/JNDQ 0.0058 def %q

/JNDA JNDQ JNDS div def %a=q/s
/JNDT JNDC JNDS div def %t=c/s
/JNDB JNDA Yu mul def %b=q/s*Yu=a*Yu
/JNDD JNDT JNDA div def %d=t/a

%dY = (s + q Y)/ c
%dY = [1 + (q/s) Y] / (c/s) = [1 + a Y] / t
%dY = [1 + (q/s)*Yu * (Y/Yu)] * (c/s) = [1 + (a*Yu) (Y/Yu)] /t
%    = [1 + b (Y/Yu)] / t
%L*= ln [1 + a Y] * d
%dL*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + aY)
%for dL*=1:
%dY = (1 + a*Y) / t

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

/Yn 100 def
/dYu Yu JNDA mul 1 add JNDT div def
/L*u Yu JNDA mul 1 add ln JNDD mul def
/iu 18 def
       
0 1 100 {/i exch def %i=0,100
         /ik i k 101 mul add def
         k 0 eq {1 1 1 setrgbcolor
                 Yi  ik i YnW mul 100. div put
                 L*i ik Yi ik get JNDA mul 1 add ln JNDD mul put
                 dYi ik Yi ik get JNDA mul 1 add JNDT div put
                } if
         k 1 eq {1 0 0 setrgbcolor
                 Yi  ik i YnR mul 100. div put
                 L*i ik Yi ik get YnR div e10D30 exp 116 mul 16 sub put
                 dYi ik Yi ik get YnR div e20D30 exp c30 mul
                 100 mul 116 div put
                } if
         k 2 eq {0 1 0 setrgbcolor
                 Yi  ik i YnG mul 100. div put
                 L*i ik Yi ik get YnG div e10D30 exp 116 mul 16 sub put
                 dYi ik Yi ik get YnG div e20D30 exp c30 mul
                 100 mul 116 div put
                } if
         k 3 eq {0 0 1 setrgbcolor
                 Yi  ik i YnB mul 100. div put
                 L*i ik Yi ik get YnB div e10D30 exp 116 mul 16 sub put
                 dYi ik Yi ik get YnB div e20D30 exp c30 mul
                 100 mul 116 div put
                } if
        } for %i=0,100
} bind def %END Yi_L*i_dYi_L85=LABJND 1985

%***********************************************
%%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 1 def /lanind2 1 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,01

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

/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 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 {(heb50-3a) show}
             {(heb51-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 {(heb50-) show}
             {(heb51-) 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
 0 0 moveto  4500 0 rlineto  stroke
 0 0 moveto  0 3000 rlineto  stroke

%*********************************************************************
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
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 1 def %default
/j2y 3 def
xchartl  0 eq {/j1y 3 def /j2y 5 def} if
xchartl  4 eq {/j1y 0 def /j2y 2 def} if
%xchartl  6 eq {/j1y 2 def /j2y 4 def} if

TBL
%yshift -1000  0   1000    2000    3000    4000
/ty [(  -2)(  -1) (    0) (    1) (    2) (    3)] def
/tyl[(0,01)(0,1)  (1)     (10)    (100)   (1000) ] 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 ********************************************
/ytr1 250 def
20 setlinewidth
tfn
050 xtr0 sub 3725 ytr1 sub moveto

xchartl 00 eq {%xchartl=00
               (log) bKs 20rm (L*) jKs (85) ibKs

               1600 xtr0 sub 3725 ytr1 sub 000 sub moveto
               TBK (LABJND lightness ) showen
               (LABJND\255Helligkeit ) showde
%               (log \050) bKs %(0,1) show 
%               (L*) jKs (85) ibKs (\051) bKs
               
               1 0 0 setrgbcolor
               1600 xtr0 sub 3725 ytr1 sub 250 sub moveto
               TBK (no CIEDE2000 lightness ) showen
               (keine CIEDE2000\255Helligkeit ) showde
%               (log \050) bKs (L*) jKs (ab) ibKs (\051) bKs
               0 0 0 setrgbcolor

              } if %xchartl=00

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

               2000 xtr0 sub 3725 ytr1 sub 000 sub moveto
               TBK (normalized LABJND lightness) showen
               (normierte LABJND\255Helligkeit) showde

               2000 xtr0 sub 3725 ytr1 sub 250 sub moveto
               (log \050) bKs %TBK (0,1) show
               (L*) jKs (85) ibLs TBK ( / ) show
               ( L*) jKs (85,u) ibKs TBK
               (\051  ) bKs

               1 0 0 setrgbcolor
               2000 xtr0 sub 3725 ytr1 sub 500 sub moveto
               TBK (no CIELDE2000 lightness) showen
               (keine CIELDE2000\255Helligkeit) showde

%               2000 xtr0 sub 3725 ytr1 sub 800 sub moveto
%               (log \050) bKs
%               ( L*) jKs TBK ( / ) show
%               ( L*) jKs (u) ibKs TBK
%               (\051  ) bKs
                0 0 0 setrgbcolor

              } if %xchartl=01

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

               1300 xtr0 sub 3725 ytr1 sub 000 sub moveto
               TBK (CIE tristimulus value difference ) showen
               (CIE\255Normfarbwertdifferenz ) showde

               1300 xtr0 sub 3725 ytr1 sub 300 sub moveto
               (10) bKs 20rm (D) sMs 20rm (Y) jKs
               TBS 0 -50 rmoveto (LABJND) show 0 50 rmoveto TBK
               ( und ) showde
               ( and ) showen
               1 0 0 setrgbcolor
               (D) sMs 20rm (Y) jKs
               TBS 0 -50 rmoveto (CIEDE2000) show 0 50 rmoveto TBK
               0 0 0 setrgbcolor

              } if %xchartl=02

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

               1800 xtr0 sub 3725 ytr0 sub 000 sub moveto
               TBK
               (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

               1800 xtr0 sub 3725 ytr1 sub 500 sub moveto
               TBK (for LABJND and ) showen
               (f\374r LABJND und ) showde
               1 0 0 setrgbcolor
               (CIEDE2000) show
               0 0 0 setrgbcolor

              } if %xchartl=03

xchartl 04 eq {%xchartl=04
               (log) bKs 20rm (\050) bKs (D) sMs (Y/Y\051) jKs
               
               1900 xtr0 sub 3725 ytr1 sub 000 sub moveto
               (CIE ) bKs (Y) jKs TBK
               ( sensitivity) showen
               (\255Empfindlichkeit) showde

               1900 xtr0 sub 3725 ytr1 sub 250 sub moveto
               (10) bKs (S) jKs
               TBL 0 -50 rmoveto (r,LABJND) show 0 50 rmoveto TBK
               ( und ) showde
               ( and ) showen
               1 0 0 setrgbcolor
               (S) jKs
               TBL 0 -50 rmoveto (r,CIEDE2000) show 0 50 rmoveto TBK
               0 0 0 setrgbcolor

              } if %xchartl=04

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

               2750 xtr0 sub 3725 ytr1 sub 000 sub moveto
               (CIE ) bKs (Y) jKs
               TBK ( sensitivity) showen
               (\255Empfindlichkeit) showde

               2750 xtr0 sub 3725 ytr1 sub 250 sub moveto
               (normalized to ) showen
               (normiert f\374r ) showde
               (\050) bKs (D) sMs (Y/Y) bKs (\051) bKs (u) ibKs

               2750 xtr0 sub 3725 ytr1 sub 550 sub moveto
               TBK (LABJND) show 20rm (&) show 20rm
               1 0 0 setrgbcolor
               (CIEDE2000) show
               0 0 0 setrgbcolor

              } if %xchartl=05

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

               1900 xtr0 sub 3725 ytr1 sub 000 sub moveto
               (CIE ) bKs (Y) jKs
               TBK ( contrast) showen
               (\255Kontrast) showde 

               1900 xtr0 sub 3725 ytr1 sub 300 sub moveto
               (0,1) bKs (C) jKs
               TBL 0 -50 rmoveto (r,LABJND) show 0 50 rmoveto TBK
               ( und ) showde
               ( and ) showen
               1 0 0 setrgbcolor
               (C) jKs
               TBL 0 -50 rmoveto (r,CIEDE2000) show 0 50 rmoveto
               0 0 0 setrgbcolor

              } if %xchartl=06

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

               2800 xtr0 sub 3725 ytr1 sub 000 sub moveto
               (CIE ) bKs (Y) jKs
               TBK ( contrast) showen
               (\255Kontrast) showde

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

               2800 xtr0 sub 3725 ytr1 sub 500 sub moveto
               TBK (LABJND) show 20rm (&) show 20rm
               1 0 0 setrgbcolor
               (CIEDE2000) show
               0 0 0 setrgbcolor

              } if %xchartl=07

%*********************************************************************
/C01_ALOG_T*_L* {%BEG C01_ALOG_T*_L* CIELAB
/Fx0log -2.0 def
/Fy0log  0.0 def

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

xtr ytr translate %new cero point

0 1 0 {/n exch def %n=0,1 %LABJND & CIELAB

0 1 0 {/k exch def %k=0,0:W,R,G,B

n 0 eq {Yi_L*i_dYi_L85} if %LABJND
n 1 eq {Yi_L*i_dYi_C00} if %CIEDE2000

50 setlinewidth
0 1 1 {/j exch def %j=0,1
n 0 eq {j 0 eq {1 1 1 setrgbcolor} if
        j 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
       } if
n 1 eq {j 0 eq {1 0 0 setrgbcolor} if
        j 1 eq {1 0 0 setrgbcolor} if
       } if

/i1 001 def
/i2 100 def

i1 1 i2 {/i exch def %i=i1,i2
         /ik i k 101 mul add def
         Yi  ik get log MULX mul
         L*i ik 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 %j=0,1
[ ] 0 setdash
50 setlinewidth %40 setlinewidth
tfn

%C01
%/x0 400 def
/x0 700 def
k 0 eq {%k=0

        xtr neg ytr neg translate %new cero point

        n 0 eq {%n=0 LABJND
        x0 L*i iu get log ytrl add MULY mul 100 add moveto
        (log) bLs 20rm (L*) jLs (85,u) ibLs
        (=) bLs TBL 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 400 add moveto
        (L*) jLs (85,) ibLs (u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        } if %n=0 LABJND

        xtr ytr translate %new cero point
       } if %k=0

} for %k=0,0

} for %n=0,1 %LABJND & CIEDE2000

tfz %tfz
[100] 0 setdash
Fx0log MULX mul L*u log MULY mul moveto
iu log MULX mul L*u log MULY mul lineto
iu 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

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

tfw
%/L*D L*i iu get def
%0300 L*D log MULY mul 100 add moveto
%(log[) bLs (L*) jLs (u) ibLs TBL (]) show
%(=) bLs TBL L*D log cvsshow2x
%(, L*) jLs (u) ibLs
%(=) bLs TBL L*u cvishow

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

ioute 0 eq {%ioute=0
tfr %C01
0 0 0 setrgbcolor
%x0 y0 moveto
%TBL
%(LABJND) show
%( and ) showen
%( und ) showde
%1 0 0 setrgbcolor
%(CIEDE2000) show
%0 0 0 setrgbcolor
%( lightness) showen
%(\255Helligkeit) showde

%L*= (t/a) * ln [1 +  (a Yu) (Y/Yu)]
%  = (t/a) * ln [1 + b * (Y/Yu)]
x0 y0 ydel 0.9 mul sub moveto
(L*) jLs (85,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b ) show (\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs

x0 0000 add y0 ydel 1.8 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 0900 add y0 ydel 1.8 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 1800 add y0 ydel 1.8 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 2700 add y0 ydel 1.8 mul sub moveto
TBL (b=a) show ipK TBL (Y) show (u) ibLs (=) bLs TBL JNDB cvsshow2x

%1 0 0 setrgbcolor
%L*= 116(Y/Yn)**(1/3)-16
%x0 y0 2.9 ydel mul sub moveto
%(L*) jLs
%TBL ( = 116 \050) show
%(Y/Y) jLs
%(n) ibLs
%(\051) bLs
%(1/3) ebLs
%TBL ( - 16) show

%TBL (    \050) show
%(Y) jLs
%(n) ibLs
%TBL (=100, 1<) show
%( Y ) jLs
%TBL (<100\051) show
%0 0 0 setrgbcolor

} 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
(range) showen
(bereich) showde

} def %END C01_ALOG_T*_L*

%*********************************************************************
/C02_ALOG_T*DT*u_L*DL*u {%BEG C02_ALOG_T*DTu* CIEDE2000
/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 1 0 {/n exch def %n=0,1 %LABJND & CIEDE2000

0 1 0 {/k exch def %k=0,0:W,R,G,B

n 0 eq {Yi_L*i_dYi_L85} if %LABJND
n 1 eq {Yi_L*i_dYi_C00} if %CIEDE2000

50 setlinewidth
0 1 1 {/j exch def %j=0,1
n 0 eq {j 0 eq {1 1 1 setrgbcolor} if
        j 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
       } if
n 1 eq {j 0 eq {1 0 0 setrgbcolor} if
        j 1 eq {1 0 0 setrgbcolor} if
       } if

/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         /ik i k 101 mul add def
         Yi  ik get log MULX mul
         L*i ik get L*u div 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 %j=0,1
[ ] 0 setdash
50 setlinewidth %40 setlinewidth
tfn

%C02
/x0 100 def
k 0 eq {%k=0
        xtr neg ytr neg translate %new cero point

        n 0 eq {%n=0 LABJND
        x0 ytr 220 sub moveto
        (log[) bLs (\050) bLs (L*) jLs (85) ibLs (\051) bLs (/\050) bLs
        (L*) jLs (85,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 120 add moveto
        (L*) jLs (85,u) ibLs
        (=) bLs TBL L*u cvishow
        (, Y) jLs (u) ibLs
        (=) bLs TBL Yu cvishow
        } if %n=0

        xtr ytr translate %new cero point
       } if %k=0

} for %k=0,0

} for %n=0,1 %LABJND & CIELAB

tfz %tfz
/i1 18 def
[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

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
tfw

/x0 0500 def
/y0 2350 def
/x1  800 def
/y1 2350 def
/xdel 800 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C01
0 0 0 setrgbcolor
x0 y0 moveto
TBL
(LABJND) show
%( and ) showen
%( und ) showde
%1 0 0 setrgbcolor
%(CIELAB) show
%0 0 0 setrgbcolor
( lightness) showen
(\255Helligkeit) showde

%L*= (t/a) * ln [1 +  (a Yu) (Y/Yu)]
%  = (t/a) * ln [1 + b * (Y/Yu)]
x0 y0 ydel 0.9 mul sub moveto
(L*) jLs (85,) ibLs
(= \050) bLs
(t/a) bLs
(\051) bLs
TBL ( ln [ 1 + ) show
TBL (b ) show (\050) bLs
(Y/Y) jLs (u) iKs
(\051]) bLs

x0 0000 add y0 ydel 1.8 mul sub moveto
TBL (a=) show JNDA cvsshow4x
x0 0900 add y0 ydel 1.8 mul sub moveto
TBL (t=) show JNDT cvsshow2x
x0 1800 add y0 ydel 1.8 mul sub moveto
TBL (t/a=) show JNDT JNDA div cvsshow1x
x0 2700 add y0 ydel 1.8 mul sub moveto
TBL (b=a) show ipK TBL (Y) show (u) ibLs (=) bLs TBL JNDB cvsshow2x

%1 0 0 setrgbcolor
%L*= 116(Y/Yn)**(1/3)-16
%x0 y0 2.9 ydel mul sub moveto
%(L*) jLs
%TBL ( = 116 \050) show
%(Y/Y) jLs
%(n) ibLs
%(\051) bLs
%(1/3) ebLs
%TBL ( - 16) show

%TBL (    \050) show
%(Y) jLs
%(n) ibLs
%TBL (=100, 1<) show
%( Y ) jLs
%TBL (<100\051) show
%0 0 0 setrgbcolor

} 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_T*DT*u_L*DL*u

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

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

xtr ytr translate %new cero point

0 1 0 {/k exch def %k=0,0:W,R,G,B

0 1 1 {/n exch def %n=0,1

n 0 eq {Yi_L*i_dYi_L85} if %LABJND 1985
n 1 eq {Yi_L*i_dYi_C00} if %CIEDE2000

50 setlinewidth
0 1 1 {/j exch def %j=0,1
n 0 eq {j 0 eq {1 1 1 setrgbcolor} if
        j 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
       } if
n 1 eq {j 0 eq {1 0 0 setrgbcolor} if
        j 1 eq {1 0 0 setrgbcolor} if
       } if

/i1 001 def
/i2 100 def
n 0 eq
j 0 eq and {%n=1 LABJND
            i1 1 i2 {/i exch def %i=i1,i2
                     /ik i k 101 mul add def
                     dYi ik dYi ik get 10 mul put
                    } for %i=i1,i2
           } if %n=0 LABJND

i1 1 i2 {/i exch def %i=i1,i2
         /ik i k 101 mul add def
         Yi  ik get log MULX mul
         dYi ik 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 %j=0,1
[ ] 0 setdash
50 setlinewidth %40 setlinewidth
tfn

%C03
/x0 0200 def
/x1 0100 def
/x2 1100 def
/x3 4100 def

k 0 eq {%k=0
        xtr neg ytr neg translate %new cero point

        n 0 eq {%n=0 black
        x3 ytr 600 add moveto
        /FY20 dYi 20 get def
        /FYiu dYi iu get def
        (m) jLs (u+) ibLs (=) bLs TBL
        x3 ytr 350 add moveto
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x2 ytr 700 sub moveto
        /FY16 dYi 16 get def
        /FYiu dYi iu get def
        (m) jLs (u-) ibLs (=) bLs TBL
        FYiu      log FY16      log sub
        Yi iu get log Yi 16 get log sub div cvsshow2x
        } if %n=0

        n 1 eq {%n=1 red CIEDE2000
        1 0 0 setrgbcolor
        x0 ytr 300 sub moveto
        (log) bLs 20rm (dY) jLs
        (=) 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
        0 0 0 setrgbcolor
               } if %n=1

        xtr ytr translate %new cero point
       } if %k=0

} for %n=0,1 LABJND, CIEDE2000

} for %k=0,0

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
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

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

/x0 0200 def
/y0 2400 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C03
x0 y0 ydel add moveto
%L*= 116(Y/Yn)**(1/3)-16
(L*) jLs
TBL ( = 116 \050) show
(Y/Y) jLs
(n) ibLs
(\051) bLs
(1/3) ebLs
TBL ( - 16) show

x0 y0 moveto
(tristimulus value difference according to CIEDE2000) showen
(Normfarbwertdifferenz nach CIEDE2000) showde

x0 500 add y0 ydel 1 mul sub moveto
(log) bLs
((dY)) jLs

x0 1100 add y0 ydel 1 mul sub moveto
TBL ( = log\050 3 \050) show
(Y) jLs (n) ibLs
TBL(/116\051 \051) show
TBL ( + (2/3) log\050) show
(Y/Y) jLs
(n) ibLs
(\051) bLs

x0 1100 add y0 ydel 2 mul sub moveto
TBL ( = log\0503\050) show
(Y) jLs (n) ibLs (1/3) ebLs
TBL(\051/116\051) show
TBL ( + (2/3) log\050) show
(Y) jLs
(\051) bLs
} 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

%L*=116*(Y/100)**(1/3)-16.
%delta_L*/delta_Y=116*(1/3)*(Y/100)**(-2/3)*(1/100)
%delta_Y=1/[116*(1/3)*(Y/100)**(-2/3)*(1/100)]=3*100/116*(Y/100)**(2/3)
%delta_Y=3*100/116*(Y/Yn)**(2/3)

0 1 0 {/k exch def %k=0,0:W,R,G,B

0 1 1 {/n exch def %n=0,1

n 0 eq {Yi_L*i_dYi_L85} if %LABJND 1985
n 1 eq {Yi_L*i_dYi_C00} if %CIEDE2000

50 setlinewidth
0 1 1 {/j exch def %j=0,1
n 0 eq {j 0 eq {1 1 1 setrgbcolor} if
        j 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
       } if
n 1 eq {j 0 eq {1 0 0 setrgbcolor} if
        j 1 eq {1 0 0 setrgbcolor} if
       } if

/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         /ik i k 101 mul add def
         Yi  ik get log MULX mul
         dYi ik get dYu div 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 %j=0,1
[ ] 0 setdash
50 setlinewidth %40 setlinewidth
tfn

%C04
/x0 0200 def
/x1 0100 def
/x2 1100 def
/x3 4100 def

k 0 eq {%k=0
        xtr neg ytr neg translate %new cero point

        n 0 eq {%n=0 black
        x3 ytr 600 add moveto
        /FY20 dYi 20 get dYi iu get div def
        /FYiu 1 def
        (m) jLs (u+) ibLs (=) bLs TBL
        x3 ytr 350 add moveto
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x2 ytr 700 sub moveto
        /FY16 dYi 16 get dYi iu get div def
        /FYiu 1 def 
        (m) jLs (u-) ibLs (=) bLs TBL
        FYiu      log FY16      log sub
        Yi iu get log Yi 16 get log sub div cvsshow2x
        } if %n=0

        n 1 eq {%n=1 red CIEDE2000
        1 0 0 setrgbcolor
        x0 ytr 250 sub moveto
        (log[) bLs ((dY)) jLs (/\050) bLs
        (dY) jLs (u) ibLs (\051]) bLs
        TBL (=0) show (, ) 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
        0 0 0 setrgbcolor
               } if %n=1

        xtr ytr translate %new cero point
       } if %k=0

} for %n=0,1 LABJND, CIEDE2000

} for %k=0,0

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

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

tfw
/x0 0200 def
/y0 2400 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C04
x0 y0 ydel add moveto
%L*= 116(Y/Yn)**(1/3)-16
(L*) jLs
TBL ( = 116 \050) show
(Y/Y) jLs
(n) ibLs
(\051) bLs
(1/3) ebLs
TBL ( - 16) show


x0 y0 moveto
(tristimulus value difference according to CIEDE2000) showen
(Normfarbwertdifferenz nach CIEDE2000) showde

x0 500 add y0 ydel 1 mul sub moveto
(log) bLs
((dY)) jLs

x0 1100 add y0 ydel 1 mul sub moveto
TBL ( = log\050 3 \050) show
(Y) jLs (n) ibLs
TBL(/116\051 \051) show
TBL ( + (2/3) log\050) show
(Y/Y) jLs
(n) ibLs
(\051) bLs

x0 1100 add y0 ydel 2 mul sub moveto
TBL ( = log\0503\050) show
(Y) jLs (n) ibLs (1/3) ebLs
TBL(\051/116\051) show
TBL ( + (2/3) log\050) show
(Y) jLs
(\051) bLs
} 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
/ytr 2000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point

%L*=116*(Y/100)**(1/3)-16.
%delta_L*/delta_Y=116*(1/3)*(Y/100)**(-2/3)*(1/100)
%delta_Y=1/[116*(1/3)*(Y/100)**(-2/3)*(1/100)]=3*100/116*(Y/100)**(2/3)
%delta_Y=3*100/116*(Y/Yn)**(2/3)

0 1 0 {/k exch def %k=0,0:W,R,G,B

0 1 1 {/n exch def %n=0,1

n 0 eq {Yi_L*i_dYi_L85} if %LABJND 1985
n 1 eq {Yi_L*i_dYi_C00} if %CIEDE2000

50 setlinewidth
0 1 1 {/j exch def %j=0,1
n 0 eq {j 0 eq {1 1 1 setrgbcolor} if
        j 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
       } if
n 1 eq {j 0 eq {1 0 0 setrgbcolor} if
        j 1 eq {1 0 0 setrgbcolor} if
       } if

/i1 001 def
/i2 100 def
n 0 eq
j 0 eq and {%n=1 LABJND
            i1 1 i2 {/i exch def %i=i1,i2
                     /ik i k 101 mul add def
                     dYi ik dYi ik get 10 mul put
                    } for %i=i1,i2
           } if %n=0 LABJND

i1 1 i2 {/i exch def %i=i1,i2
         /ik i k 101 mul add def
         Yi  ik get log MULX mul
         dYi ik get Yi ik get div 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 %j=0,1
[ ] 0 setdash
50 setlinewidth %40 setlinewidth
tfn

%C05
/x0 0200 def
/x1 0100 def
/x2 1100 def
/x3 4100 def

k 0 eq {%k=0
        xtr neg ytr neg translate %new cero point

        n 0 eq {%n=0 black
        x3 ytr 1300 sub moveto
        /FY20 dYi 20 get Yi 20 get div def
        /FYiu dYi iu get Yi iu get div def
        (m) jLs (u+) ibLs (=) bLs TBL
        x3 ytr 1550 sub moveto
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x2 100 sub ytr 700 sub moveto
        /FY16 dYi 16 get Yi 16 get div def
        /FYiu dYi iu get Yi iu get div def
        (m) jLs (u-) ibLs (=) bLs TBL
        FYiu      log FY16      log sub
        Yi iu get log Yi 16 get log sub div cvsshow2x
        } if %n=0

        n 1 eq {%n=1 red CIEDE2000
        1 0 0 setrgbcolor
        x0 dYi iu get Yi iu get div log 2 add MULY mul
        100 add moveto
        (dY/Y) jLs
        (=) bLs TBL dYi iu get Yi iu get div cvsshow2x (, ) show
        /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

        x0 dYi iu get Yi iu get div log ytrl add MULY mul 250 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
        0 0 0 setrgbcolor
               } if %n=1

        xtr ytr translate %new cero point
       } if %k=0

} for %n=0,1 LABJND, CIEDE2000

} for %k=0,0

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

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

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
tfw

/x0 0100 def
/y0 2500 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C05
x0 y0 moveto
(Y) jLs
TBL
( sensitivity according to CIEDE2000) showen
(\255Empfindlichkeit nach CIEDE2000) showde

%log[(dY/Y)]
x0 y0 0.9 ydel mul sub moveto
(log[\050) bLs (dY/Y) jLs
(\051 = log\0503 \050) bLs
(Y) jLs (n) ibLs (1/3) ebLs
(\051/116\051) bLs
( - (1/3) log) bLs 20rm (Y) jLs
} 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

%L*=116*(Y/100)**(1/3)-16.
%delta_L*/delta_Y=116*(1/3)*(Y/100)**(-2/3)*(1/100)
%delta_Y=1/[116*(1/3)*(Y/100)**(-2/3)*(1/100)]=3*100/116*(Y/100)**(2/3)
%delta_Y=3*100/116*(Y/Yn)**(2/3)

0 1 0 {/k exch def %k=0,0:W,R,G,B

0 1 1 {/n exch def %n=0,1

n 0 eq {Yi_L*i_dYi_L85} if %LABJND 1985
n 1 eq {Yi_L*i_dYi_C00} if %CIEDE2000

50 setlinewidth
0 1 1 {/j exch def %j=0,1
n 0 eq {j 0 eq {1 1 1 setrgbcolor} if
        j 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
       } if
n 1 eq {j 0 eq {1 0 0 setrgbcolor} if
        j 1 eq {1 0 0 setrgbcolor} if
       } if

/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         /ik i k 101 mul add def
         Yi  ik get log MULX mul
         dYi ik get Yi ik get div
         dYu        Yu        div div 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 %j=0,1
[ ] 0 setdash
50 setlinewidth %40 setlinewidth
tfn

%C06
/x0 0200 def
/x1 0100 def
/x2 1100 def
/x3 4100 def

k 0 eq {%k=0
        xtr neg ytr neg translate %new cero point

        n 0 eq {%n=0 black
        x3 ytr 0000 sub moveto
        /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
        x3 ytr 250 sub moveto
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x2 100 sub ytr 500 add moveto
        /FY16 dYi 16 get Yi 16 get div
              dYi iu get Yi iu get div div def
        /FYiu 1 def
        (m) jLs (u-) ibLs (=) bLs TBL
        FYiu      log FY16      log sub
        Yi iu get log Yi 16 get log sub div cvsshow2x
        } if %n=0

        n 1 eq {%n=1 red CIEDE2000
        1 0 0 setrgbcolor
        x0 ytr 250 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

        x0 ytr 550 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
               } if %n=1

        xtr ytr translate %new cero point
       } if %k=0

} for %n=0,1 LABJND, CIEDE2000

} for %k=0,0

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

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
tfw

/x0 0100 def
/y0 2500 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C06
x0 y0 moveto
(Y) jLs
TBL
( sensitivity according to CIEDE2000) showen
(\255Empfindlichkeit nach CIEDE2000) showde

%Cr= log[(Y/dY)/(Yu/dYu)]
x0 y0 0.9 ydel mul sub moveto
(log) bLs 20rm (\050) bLs (dY/Y) jLs (\051/\050) bLs
(dY/Y) jLs (\051) bLs (u) ibLs (]) bLs
( = (-1/3) log\050) bLs (Y/Y) jLs (u) ibLs (\051) bLs
} if %ioute=0

tfn %tfw
/x0 3500 def
/y0 1600 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
%/ytr 1000 def
%/ytrl ytr 1000 div def %log shift
/ytr 0000 def
/ytrl ytr 1000 div def %log shift

xtr ytr translate %new cero point

%L*=116*(Y/100)**(1/3)-16.
%delta_L*/delta_Y=116*(1/3)*(Y/100)**(-2/3)*(1/100)
%delta_Y=1/[116*(1/3)*(Y/100)**(-2/3)*(1/100)]=3*100/116*(Y/100)**(2/3)
%delta_Y=3*100/116*(Y/Yn)**(2/3)

0 1 0 {/k exch def %k=0,0:W,R,G,B

0 1 1 {/n exch def %n=0,1

n 0 eq {Yi_L*i_dYi_L85} if %LABJND 1985
n 1 eq {Yi_L*i_dYi_C00} if %CIEDE2000

50 setlinewidth
0 1 1 {/j exch def %j=0,1
n 0 eq {j 0 eq {1 1 1 setrgbcolor} if
        j 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
       } if
n 1 eq {j 0 eq {1 0 0 setrgbcolor} if
        j 1 eq {1 0 0 setrgbcolor} if
       } if

/i1 001 def
/i2 100 def
n 0 eq
j 0 eq and {%n=1 LABJND
            i1 1 i2 {/i exch def %i=i1,i2
                     /ik i k 101 mul add def
                     dYi ik dYi ik get 10 mul put
                    } for %i=i1,i2
           } if %n=0 LABJND

i1 1 i2 {/i exch def %i=i1,i2
         /ik i k 101 mul add def
         Yi  ik get log MULX mul
         Yi  ik get
         dYi ik get div 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 %j=0,1
[ ] 0 setdash
50 setlinewidth %40 setlinewidth
0 setgray

%C07
/x0 0200 def
/x1 0100 def
/x2 1100 def
/x3 4100 def

k 0 eq {%k=0
        xtr neg ytr neg translate %new cero point

        n 0 eq {%n=0 black
        x3 ytr 1400 add moveto
        /FY20 Yi 20 get dYi 20 get div def
        /FYiu Yi iu get dYi iu get div def
        (m) jLs (u+) ibLs (=) bLs TBL
        x3 ytr 1150 add moveto
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x2 ytr 550 add moveto
        /FY16 Yi 16 get dYi 16 get div def
        /FYiu Yi iu get dYi iu get div def
        (m) jLs (u-) ibLs (=) bLs TBL
        FYiu      log FY16      log sub
        Yi iu get log Yi 16 get log sub div cvsshow2x
        } if %n=0

        n 1 eq {%n=0 red CIEDE2000
        1 0 0 setrgbcolor
        x0 Yi iu get dYi iu get div log ytrl add MULY mul 250 sub moveto
        (log) bLs 20rm ((Y/dY)) jLs (u) ibLs
        (=) bLs TBL Yi iu get dYi iu get div log cvsshow2x
        /FY20 Yi 20 get dYi 20 get div def
        /FYiu Yi iu get dYi 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

        x0 Yi iu get dYi iu get div log ytrl add MULY mul 120 add moveto
        (L*) jLs (u) ibLs
        (=) bLs TBL L*u cvishow
        (, 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
               } if %n=1

        xtr ytr translate %new cero point
       } if %k=0

} for %n=0,1 LABJND, CIEDE2000

} for %k=0,0

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

ioutc 1 eq {cero_line} if

xtr neg ytr neg translate %old cero point

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
tfw

/x0 0100 def
/y0 2700 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C07
x0 y0 moveto
(Y) jLs
TBL
( contrast according to CIEDE2000) showen
(\255Kontrast nach CIEDE2000) showde

x0 500 add y0 ydel sub moveto
(log) bLs
((Y/dY)) jLs

x0 500 add 750 add y0 ydel sub moveto
( = log[\0501/3\051) bLs ( \050116/) bLs
(Y) jLs (n) ibLs (\051]) bLs
( + (1/3) log) bLs 20rm (\050) bLs (Y/Y) jLs (n) ibLs (\051) bLs

x0 500 add 750 add y0 ydel 2 mul sub moveto
( = log[(1/3) \050116/\050) bLs
(Y) jLs (n) ibLs (1/3) ebLs
(\051]) bLs
( + (1/3) log) bLs 20rm (\050) bLs (Y) jLs (\051) bLs
} 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 C07_ALOG_L_DL

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

xtr ytr translate %new cero point

%L*=116*(Y/100)**(1/3)-16.
%delta_L*/delta_Y=116*(1/3)*(Y/100)**(-2/3)*(1/100)
%delta_Y=1/[116*(1/3)*(Y/100)**(-2/3)*(1/100)]=3*100/116*(Y/100)**(2/3)
%delta_Y=3*100/116*(Y/Yn)**(2/3)

0 1 0 {/k exch def %k=0,0:W,R,G,B

0 1 1 {/n exch def %n=0,1

n 0 eq {Yi_L*i_dYi_L85} if %LABJND 1985
n 1 eq {Yi_L*i_dYi_C00} if %CIEDE2000

50 setlinewidth
0 1 1 {/j exch def %j=0,1
n 0 eq {j 0 eq {1 1 1 setrgbcolor} if
        j 1 eq {0 0 0 setrgbcolor [100] 0 setdash} if
       } if
n 1 eq {j 0 eq {1 0 0 setrgbcolor} if
        j 1 eq {1 0 0 setrgbcolor} if
       } if

/i1 001 def
/i2 100 def
i1 1 i2 {/i exch def %i=i1,i2
         /ik i k 101 mul add def
         Yi ik get log MULX mul
         Yi ik get dYi ik get div
         Yu        dYu        div div 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 %j=0,1
[ ] 0 setdash
50 setlinewidth %40 setlinewidth
tfn

%C08
/x0 0300 def
/x1 0100 def
/x2 1100 def
/x3 4100 def

k 0 eq {%k=0
        xtr neg ytr neg translate %new cero point

        n 0 eq {%n=0 black
        x3 ytr 300 add moveto
        /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
        x3 ytr 050 add moveto
        FY20      log FYiu      log sub
        Yi 20 get log Yi iu get log sub div cvsshow2x

        x2 ytr 700 sub moveto
        /FY16 Yi 16 get dYi 16 get div
              Yi iu get dYi iu get div div def
        /FYiu 1 def
        (m) jLs (u-) ibLs (=) bLs TBL
        FYiu      log FY16      log sub
        Yi iu get log Yi 16 get log sub div cvsshow2x
        } if %n=0

        n 1 eq {%n=1 red CIEDE2000
        1 0 0 setrgbcolor
        0300 ytr 120 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 400 add moveto
        (L*) jLs (u) ibLs
        (=) bLs TBL L*u cvishow
        (, 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
               } if %n=1

        xtr ytr translate %new cero point
       } if %k=0

} for %n=0,1 LABJND, CIEDE2000

} for %k=0,0

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

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

/x0 0100 def
/y0 2700 def
/ydel 300 def

ioute 0 eq {%ioute=0
tfr %C08
x0 y0 moveto
(Y) jLs
TBL
( contrast according to CIEDE2000) showen
(\255Kontrast nach CIEDE2000) showde

%Cr= log[(Y/dY)/(Yu/dYu)]
x0 500 add y0 1.0 ydel mul sub moveto
(log[) bLs 20rm (\050) bLs (Y/) jLs (D) sKs (Y) jLs
(\051/\050) bLs (Y/) jLs (D) sKs (Y) jLs (\051) bLs (u) ibLs (]) bLs
( = (1/3) log\050) bLs ((Y/Y)) jLs (u) ibLs (\051) bLs

x0 500 add y0 2.0 ydel mul sub moveto
(L*) jLs (u) ibLs
(=) bLs TBL L*u cvishow
(, Y) jLs (u) ibLs
(=) bLs TBL Yu cvishow
(, dY) jLs (u) ibLs
(=) bLs TBL dYu cvsshow2x
} 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 200 def
xchartl 00 eq {100 3200 xtfb sub moveto
               (L*) jLs (85) ibLs
              } if

xchartl 01 eq {100 3200 xtfb sub moveto
               (L*/L*) jLs (85) ibLs
              } 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_T*_L*} if
xchartl 01 eq {C02_ALOG_T*DT*u_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   7 le {xpos xchartl get neg ypos xchartl get neg translate} if

grestore
} for %xchartl=0,07

showpage
grestore

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