%!PS-Adobe-3.0 EPSF-3.0 http://farbe.li.tu-berlin.de/eef3/eef30-8a
%%BoundingBox: 70 85 244 206

%START PDFDE011.EPS
/pdfmark05 where {pop} {userdict /pdfmark05 /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/eef3/eef3.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:2023100112000)
 /ModDate (D:20231001112000)
/DOCINFO pdfmark05
[ /View [ /FitB ]
/DOCVIEW pdfmark05
%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 1 sub /Symbol FS} bind def
/SK {250 1 sub /Symbol FS} bind def
/SM {300 1 sub /Symbol FS} bind def
/SG {350 1 sub /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
/kM2 {300 /TimesI-ISOL1 FS  show TM} bind def
/bM2 {300 /TimesB-ISOL1 FS  show TM} bind def
/jM2 {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 TS} bind def
/kLs {200 /TimesI-ISOL1 FS  show TS} bind def
/bLs {200 /TimesB-ISOL1 FS  show TS} bind def
/jLs {200 /TimesBI-ISOL1 FS  show TS} bind def
/sLs {200 /Symbol FS  show TS} bind def
/iLs {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TS} bind def
/eLs {160 /Times-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TS} bind def
/ibLs {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TS} bind def
/ebLs {160 /TimesB-ISOL1 FS 0 110 rmoveto show 0 -110 rmoveto TS} bind def
/ipL {160 /Times-ISOL1 FS 25 25 rmoveto (\267) show 25 -25 rmoveto TS} bind def

%XCHA02.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 c m y k
  {setrgbcolor rec fill} bind def

/colrecst %x y width heigth c m y k
  {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 c m y k
  {setrgbcolor rem fill} bind def

/colremst %x y width heigth c m y k
  {setrgbcolor rem stroke} bind def

/tzr {1 0 0} bind def %Reproduktionsfarben
/tzg {0 1 0} bind def
/tzb {0 0 1} bind def
/tzc {0 1 1} bind def
/tzm {1 0 1} bind def
/tzy {1 1 0} bind def

/tzn {0.00} bind def %Graureihe
/tzd {0.25} bind def
/tzz {0.50} bind def
/tzh {0.75} bind def
/tzw {1.00} bind def

/tfr {1 0 0 setrgbcolor} bind def %Reproduktionsfarben
/tfg {0 1 0 setrgbcolor} bind def
/tfb {0 0 1 setrgbcolor} bind def
/tfc {0 1 1 setrgbcolor} bind def
/tfm {1 0 1 setrgbcolor} bind def
/tfy {1 1 0 setrgbcolor} bind def

/tfrn {0.5 0.0 0.0 setrgbcolor} bind def %Reproduktionsfarben
/tfgn {0.0 0.5 0.0 setrgbcolor} bind def
/tfbn {0.0 0.0 0.5 setrgbcolor} bind def
/tfcn {0.0 0.5 0.5 setrgbcolor} bind def
/tfmn {0.5 0.0 0.5 setrgbcolor} bind def
/tfyn {0.5 0.5 0.0 setrgbcolor} bind def

/tfn {0.00 setgray} bind def %Graureihe
/tfd {0.25 setgray} bind def
/tfz {0.50 setgray} bind def
/tfh {0.75 setgray} bind def
/tfw {1.00 setgray} bind def
%XCHA02.PS BEG

/YnW 100 def %CIELAB&TUBJND

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

/X00i 401 array def %log(Xi)

/Y00i 401 array def %L*i, log(L*i)
/Y0ui 401 array def %L*i/Lu, log(L*i/L*u)
/Y0xi 401 array def %one of eight above

%without Yref
/X01k 009 array def %x of 9 steps
/Y01k 009 array def %L*k, log(L*k) range 0..8
%with Yref
/X02k 009 array def %x of 9 steps
/Y02k 009 array def %L*k, log(L*k) range 0..8
%with Yref and linearisation
/X03k 009 array def %x of 9 steps
/Y03k 009 array def %L*k, log(L*k) range 0..8
%with exponent relative
/X03ke 009 array def %x of 9 steps
/Y03ke 009 array def %L*k, log(L*k) range 0..8
%with exponent relative transfer
/X03kr 009 array def %x of 9 steps
/Y03kr 009 array def %L*k, log(L*k) range 0..8

/Y0xki 009 array def
/delki 009 array def

%*************************************************
/proz_DECODY_L* {%BEG proz_DECODY_L*
                 /YYn Y Yn div def
                 /YYnE3 YYn 0.3333 exp def
                 /DE 24 116 div def
                 /DE3 DE 3 exp def

                 YYn DE3 gt {/FYYn YYnE3 def}
                            {/FYYn 841 108 div YYn mul 
                             16 116 div add def} ifelse
                             /L* FYYn 116 mul 16 sub def
                } bind def %END proz_DECODY_L*
%*************************************************
/proz_DECODL*_Y {%BEG proz_DECODL*_Y
                 /FYYn L* 16 add 116 div def
                 /DE 24 116 div def
                 L* 8 gt {/Y FYYn 3 exp Yn mul def}
                         {/Y FYYn 16 116 div sub
                          108 841 div mul Yn mul def
                         } ifelse
           } bind def %END proz_DECODL*_Y

%************************************************
/proz_Yi_dYi_L*i_C_0 {%BEG proz_Yi_dYi_L*i_C_0 C=CIELAB
/Yn YnW def
i01 1 i02 {/i exch def %i=i01,102
           Yi i i put
           /Y Yi i get def
           proz_DECODY_L*
           L*i i L* put
           dYi i Yi i get YnW div e20D30 exp c30 mul 100 mul 116 div put
          } for %i=i01,i02
          /dYu   Yu       YnW div e20D30 exp c30 mul 100 mul 116 div def
} bind def %END proz_Yi_dYi_L*i_C_0 C=CIELAB

%***************************************************
/proz_Yi_dYi_Yxyi_C_0 {%BEG proz_Yi_dYi_Yxyi_C_0 definiton: Yi, L*i
%i=0 not available
i01 1 i02 {/i exch def %i=i01,i02
           X00i i i put
           ychart 0 eq {%ychart=0
                        Y00i i L*i i get put
                        Y0ui i L*i i get L*u div put
                       } if %ychart=0
           ychart 1 eq {%ychart=1
                        Y00i i dYi i get put
                        Y0ui i dYi i get dYu div put
                       } if %ychart=1
           ychart 2 eq {%ychart=2
                        Y00i i dYi i get Yi i get div put
                        Y0ui i dYi i get Yi i get div
                               dYu       Yu       div div put
                       } if %ychart=2
           ychart 3 eq {%ychart=3
                        Y00i i Yi i get dYi i get div put
                        Y0ui i Yi i get dYi i get div
                               Yu       dYu       div div put
                       } if %ychart=3
          } for %i=i01,i02

} bind def %END proz_Yi_dYi_Yxyi_C_0

%*********************************************
/proz_9step_CIELAB {%BEG proz_9step_CIELAB
%N of Y=3,6
/YN0 3.6 def
/Y YN0 def
proz_DECODY_L*
/L*N0 L* def

/YW0 90 def
/Y YW0 def
proz_DECODY_L*
/L*W0 L* def

/L*ran L*W0 L*N0 sub def
/L*del L*ran 8 div def

%-1800 2250 moveto
%L*N0   cvsshow2 (, ) show
%L*W0   cvsshow2 (, ) show
%L*ran cvsshow2 (, ) show
%L*del cvsshow2 (, ) show

%********************************************
ychart 0 eq {%ychart=0
xchartl 1 eq {%xchartl=1

0 1 8 {/k exch def %k=0,8
       /L* L*N0 L*del k mul add def
       Y01k k L* put
       proz_DECODL*_Y /Xout Y def
       X01k k Xout put
      } for %k=0,8

newpath
tfg
0 1 8 {/k exch def %k=0,8
       X01k k get XLIN 0 eq {log} if MULX mul
       Y01k k get L*u div MULY2 mul 040 0 360 arc fill
       newpath
      } for %k=0,8
tfn
} if %xchartl=1

%*************************************************
xchartl 2 eq {%xchartl=2

/Yref 90.0 def
0 1 8 {/k exch def %k=0,8
       /L* L*N0 L*del k mul add def
       Y01k k L* put
       proz_DECODL*_Y /Xout Y def
       X01k k Xout put
%       0500 2500 250 k mul sub moveto
%       Y01k k get cvsshow2 (, ) show
%       X01k k get cvsshow2 (, ) show
      } for %k=0,8
       /Yu2 X01k 4 get def

0 1 8 {/k exch def %k=0,8
       /L* L*N0 L*del k mul add def
       Y01k k L* put
       proz_DECODL*_Y /Xout Y def
       X01k k Xout put
       X02k k X01k k get Yref add Yu2 Yref add div Yu2 mul put

       /Y X02k k get def
       proz_DECODY_L* /Yout L* def
       Y02k k Yout put

%       -1800 2000 250 k mul sub moveto
%       X02k k get cvsshow2 (, ) show
%       Y02k k get cvsshow2 (, ) show
%       Y02k k get L*u div cvsshow2 (, ) show

      } for %k=0,8

newpath
tfr
0 2 8 {/k exch def %k=0,8
       X02k k get XLIN 0 eq {log} if MULX mul
       Y02k k get L*u div MULY2 mul 040 0 360 arc fill
       newpath
      } for %k=0,8
tfn

/xl1 X02k 0 get XLIN 0 eq {log} if MULX mul def
/yl1 Y02k 0 get L*u div MULY2 mul def
/xl2 X02k 8 get XLIN 0 eq {log} if MULX mul def
/yl2 Y02k 8 get L*u div MULY2 mul def
[100] 0 setdash
tfb
XLIN 0 eq {/xl3 3000 log MULX mul def}
          {/xl3 0200     MULX mul 300 sub def} ifelse
xl1 yl1 moveto xl3 yl1 lineto stroke
xl2 yl2 moveto xl3 yl2 lineto stroke
[ ] 0 setdash
TBL
xl3 1200 sub yl1 50 add moveto
(device black) showea
(Ger\344teschwarz) showde
xl3 1200 sub yl2 50 add moveto
(device white) showea
(Ger\344tewei\337) showde

} if %xchartl=2

%*************************************************
xchartl 3 eq {%xchartl=3
/Yref 90.0 def
0 1 8 {/k exch def %k=0,8
       /L* L*N0 L*del k mul add def
       Y01k k L* put
       proz_DECODL*_Y /Xout Y def
       X01k k Xout put
%       0500 2500 250 k mul sub moveto
%       Y01k k get cvsshow2 (, ) show
%       X01k k get cvsshow2 (, ) show
      } for %k=0,8
       /Yu2 X01k 4 get def

0 1 8 {/k exch def %k=0,8
       /L* L*N0 L*del k mul add def
       Y01k k L* put
       proz_DECODL*_Y /Xout Y def
       X01k k Xout put
       X02k k X01k k get Yref add Yu2 Yref add div Yu2 mul put

       /Y X02k k get def
       proz_DECODY_L* /Yout L* def
       Y02k k Yout put

%       -1800 2000 250 k mul sub moveto
%       X02k k get cvsshow2 (, ) show
%       Y02k k get cvsshow2 (, ) show
%       Y02k k get L*u div cvsshow2 (, ) show

      } for %k=0,8

0 1 8 {/k exch def
       Y03kr k Y02k k get Y02k 0 get sub
               Y02k 8 get Y02k 0 get sub div put
       Y03ke k Y03kr k get 1 1.6 div exp put
       Y03k  k Y02k 0 get
               Y02k 8 get Y02k 0 get sub Y03ke k get mul add put

       /L* Y03k k get def
       proz_DECODL*_Y
       /Yout Y def
       X03k k Yout put

%       1000 2000 250 k mul sub moveto
%       Y03kr k get cvsshow2 (, ) show
%       Y03ke k get cvsshow2 (, ) show
%       Y03k  k get cvsshow2 (, ) show       
%       X03k  k get cvsshow2 (, ) show
      } for %k=0,8

ioutt 1 eq {%ioutt 0:without transfer, 1:with transfer
newpath
tfr
0 1 8 {/k exch def %k=0,8
       /X3n X03k k get XLIN 0 eq {log} if MULX mul def
       /Y3n Y03k k get L*u div MULY2 mul def   
       /X1n X01k k get XLIN 0 eq {log} if MULX mul def
       /Y1n Y01k k get L*u div MULY2 mul def

       /delX X1n X3n sub def
       /delY Y1n Y3n sub def
       /delR delX 0.5 mul dup mul
             delY 0.5 mul dup mul add sqrt def

       /XMn X3n delX 0.5 mul add def
       /YMn Y3n delY 0.5 mul add def

       X1n Y1n moveto X3n Y3n lineto stroke

       /delR delX 0.5 mul dup mul 
             delY 0.5 mul dup mul add sqrt def

       /alph  delX delY atan def
       /alphp alph 180 add def
       XMn YMn delR 0 360 arc stroke
      } for %k=0,8

} if %ioutt=1 0:without transfer, 1:with transfer

%again of xchartl=1
0 1 8 {/k exch def %k=0,8
       /L* L*N0 L*del k mul add def
       Y01k k L* put
       proz_DECODL*_Y /Xout Y def
       X01k k Xout put
      } for %k=0,8
newpath
tfg
0 1 8 {/k exch def %k=0,8
       X01k k get XLIN 0 eq {log} if MULX mul
       Y01k k get L*u div MULY2 mul 040 0 360 arc fill
       newpath
      } for %k=0,8
tfn

%xchartl=3 linearized
tfb
newpath
0 2 8 {/k exch def %k=0,8
       X03k k get XLIN 0 eq {log} if MULX mul
       Y03k k get L*u div MULY2 mul 040 0 360 arc fill
       newpath
      } for %k=0,8
tfn

/xl1 X03k 0 get XLIN 0 eq {log} if MULX mul def
/yl1 Y03k 0 get L*u div MULY2 mul def
/xl2 X03k 8 get XLIN 0 eq {log} if MULX mul def
/yl2 Y03k 8 get L*u div MULY2 mul def
[100] 0 setdash
tfb
XLIN 0 eq {/xl3 3000 log MULX mul def}
          {/xl3 0200     MULX mul 300 sub def} ifelse
xl1 yl1 moveto xl3 yl1 lineto stroke
xl2 yl2 moveto xl3 yl2 lineto stroke
[ ] 0 setdash
TBL
xl3 1200 sub yl1 50 add moveto
(device black) showea
(Ger\344teschwarz) showde
xl3 1200 sub yl2 50 add moveto
(device white) showea
(Ger\344tewei\337) showde
 
} if %xchartl=3

} if %ychart=0 long loop

} bind def %END proz_9step_CIELAB

%*********************************************************************
/proz_C02_ALOG_CIELAB {%BEG proz_C02_ALOG_CIELAB

/xshift 100 def
XLIN 0 eq {/xtr 2000 def}
          {/xtr xshift MULX mul def} ifelse
/ytr 0000 def

%BEG translate
 xtr ytr translate %new cero point shift 50 MULX

%0 not available
i01 1 i02 {/i exch def %i=i01,i02
           Y0xi i Y0ui i get put
          } for %i=i01,i02

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
/ix1 001 def
/ix2 180 def
ix1 1 ix2 {/i exch def %i=ix1,ix2
           X00i i get XLIN 0 eq {log} if MULX mul
           Y0xi i get MULY2 mul
           i ix1 eq {moveto} if
           i ix1 1 add ge
           i ix2 1 sub le and {lineto} if
           i ix2 eq {stroke} if
          } for %i=ix1,ix2
} for %je=0,1

50 setlinewidth
0 1 2 {/k exch def %k=0,3
       k 0 eq {/i 04 def} if
       k 1 eq {/i 18 def} if
       k 2 eq {/i 90 def} if

       XLIN 0 eq {%XLIN=0
       %shift ca. 0.12*50 or 0.12*1
       xchartl 0 eq
       xchartl 1 eq or
       xchartl 2 eq or
       xchartl 3 eq or {X00i i get log MULX mul 400 sub
                        Y0xi i get 0.12 add MULY2 mul 
                        moveto} if
                  }%XLIN=0
                  {%XLIN=1
       %shift ca. 0.12*50 or 0.12*1
       xchartl 0 eq
       xchartl 1 eq or
       xchartl 2 eq or
       xchartl 3 eq or {X00i i get MULX mul 400 sub 050 add
                        Y0xi i get 0.12 add MULY2 mul i 0 eq {80 sub} if
                        moveto} if
                  }ifelse %XLIN=1
       TBK
       Y0xi i get cvsshow2x
       0 setgray
       newpath
       } for %k=0,2

[ ] 0 setdash
0 setgray

%******************************************************
XLIN 0 eq {%XLIN=0
           /xl0  0.01 log MULX mul def
           /xl1  3.60 log MULX mul def
           /xlm 18.00 log MULX mul def
           /xl2 90.00 log MULX mul def
           /yl0       0 MULY2 mul def
           /yl1 Y0ui  4 get MULY2 mul def
           /ylm Y0ui 18 get MULY2 mul def
           /yl2 Y0ui 90 get MULY2 mul def
          }%XLIN=0
          {%XLIN=1
           /xl0 xshift neg MULX mul def
           /xl1  3.60 MULX mul def
           /xlm 18.00 MULX mul def
           /xl2 90.00 MULX mul def
           /yl0       0 MULY2 mul def
           /yl1 Y0ui  4 get MULY2 mul def
           /ylm Y0ui 18 get MULY2 mul def
           /yl2 Y0ui 90 get MULY2 mul def
          } ifelse %XLIN=0,1

%BEG scale-test
%0 0 1 setrgbcolor
%000 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%050 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%100 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%150 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%200 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%0 setgray
%END scale-test

tfz %tfz
[100] 0 setdash
xl0 ylm moveto xlm ylm lineto xlm yl0 lineto stroke
tfg
xl1 yl0 moveto xl2 yl0 lineto stroke
xl0 yl1 moveto xl0 yl2 lineto stroke
tfr
XLIN 0 eq {/xl3 3000 log MULX mul def}
          {/xl3 0200     MULX mul 200 sub def} ifelse
xl1 yl1 moveto xl3 yl1 lineto stroke
xl2 yl2 moveto xl3 yl2 lineto stroke
[ ] 0 setdash
TBL
xl3 0700 sub yl1 50 add moveto
(black) showea
(Schwarz) showde
xl3 0700 sub yl2 50 add moveto
(white) showea
(Wei\337) showde

ychart 0 eq {%xchartl=0
iouto 1 eq {%iouto=1 %iouto 0:without output text, 1:with output text

%text contrast, steps
tfn
TBL
xchartl 1 eq {%xchartl=1
xl0 50 add yl2 70 add moveto
(intended output:) showen
(angestrebte Ausgabe:) showde
xl0 50 add yl2 200 sub moveto
(equally spaced 9 steps in ) showen
(gleichabst\344ndige 9 Stufen in ) showde
ifunc 0 eq {(TUBJND) show}
           {(CIELAB) show} ifelse
xl0 50 add yl2 400 sub moveto
(for contrast ) showen
(f\374r Kontrast ) showde
TBIL (C) show (Y) ibLs TBL (=25:1) show
             } if %xchartl=1

xchartl 2 eq {%xchartl=2
xl0 50 add yl2 70 add moveto
(non linearized real output:) showen
(nichtlinerasierte reale Ausgabe:) showde
xl0 50 add yl2 200 sub moveto
(nonequally spaced 9 steps) showen
(ungleich gestufte 9 Stufen) showde
xl0 50 add yl2 400 sub moveto
(for contrast ) showen
(f\374r Kontrast ) showde
TBIL (C) show (Y) ibLs TBL (=2:1) show
             } if %xchartl=2

xchartl 3 eq {%xchartl=3
xl0 50 add yl2 70 add moveto
(linearized real output:) showen
(linerasierte reale Ausgabe:) showde
xl0 50 add yl2 200 sub moveto
(equally spaced 9 steps in ) showen
(gleich gestufte 9 Stufen in ) showde
ifunc 0 eq {(TUBJND) show}
           {(CIELAB) show} ifelse
xl0 50 add yl2 400 sub moveto
(after contrast transfer ) showen
(nach Kontrasttransfer ) showde
TBIL (C) show (Y) ibLs TBL
(=25:1 to 2:1) showen
(=25:1 nach 2:1) showde
             } if %xchartl=3

} if %iouto=1 %iouto 0:without output text, 1:with output text
} if %ychart=0

tfg
xl1 yl0 moveto xl1 yl1 lineto xl0 yl1 lineto stroke
xl2 yl0 moveto xl2 yl2 lineto xl0 yl2 lineto stroke
tfn
XLIN 0 eq {%XLIN=0
xl1 050 add yl0 250 add moveto TBIL (Y) show (N) ibLs TBL (=3,6) show
xl2 050 add yl0 250 add moveto TBIL (Y) show (W) ibLs TBL (=90) show
          }%XLIN=0
          {%XLIN=1
xl1 750 sub yl0 100 add moveto TBIL (Y) show (N) ibLs TBL (=3,6) show
xl2 050 add yl0 100 add moveto TBIL (Y) show (W) ibLs TBL (=90) show
          } ifelse %XLIN=0,1

tfn
XLIN 0 eq {%XLIN=0
xlm 50 add yl0 250 add moveto TBIL (Y) show (u) ibLs TBL (=18) show
          }%XLIN=0
          {%XLIN=1
xlm 050 add yl0 100 add moveto TBIL (Y) show (u) ibLs TBL (=18) show
          } ifelse %XLIN=0,1
 
%C01
/x0 xl0 50 add def
tfn
x0 ylm 120 add moveto
TBIL (L*) show ifunc 0 eq {(r,TUBJND) ibLs}
                          {(r,CIELAB) ibLs} ifelse
TBL (=1) show
/FYiuP1 L*i iu 1 add get L*i iu get div def
/FYiu 1 def
TBIL (, m) show (u) ibLs TBL (=) show
Y0xi iu 1 add get     Y0xi iu get     sub
X00i iu 1 add get log X00i iu get log sub div cvsshow2x

x0 ylm 200 sub moveto
TBIL (L*) show ifunc 0 eq {(u,TUBJND) ibLs}
                          {(u,CIELAB) ibLs} ifelse
TBL (=) show L*u cvishow
TBIL (, Y) show (u) ibLs
TBL (=) show Yu cvishow

%ifunc 0 eq {
%plot_9step_TUBJND
%} if
%ifunc 1 eq {
proz_9step_CIELAB
%} if

newpath
0 1 2 {/k exch def %k=0,2
       k 0 eq {/i 04 def} if
       k 1 eq {/i 18 def} if
       k 2 eq {/i 90 def} if
%       xchartl 0 eq {%xchartl=0
       tfb
       X00i i get XLIN 0 eq {log} if MULX mul
       Y0ui i get MULY2 mul 060 0 360 arc fill
%                    } if %xchartl=0
      } for %k=0,2
newpath

%END translate
 xtr neg ytr neg translate %new cero point shift 50 MULX

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

ioute 1 eq {%ioute=0 0:without equations,   1:with equations
tfr %C02

/x00t 0100 def
/x00e 5200 def
/y00t 2700 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 TUBJND
%L*= d * ln [1 + b(Y/Yu))
x00t y00t moveto
TBIL (L*) show (TUBJND) ibLs
TBL (= d ln [ 1 + ) show
TBL (b) show ipK
TBL (\050) show
TBIL (Y/Y) show (u) ibLs
TBL (\051]) show

x00t 3500 y00t moveto
TBL (d=) show JNDD cvsshow1x
x00t 4300 add y00t moveto
TBL (b=) show JNDB cvsshow3x

x00e y00t moveto
TBL ([2a]) show

x00t y00t ydel 1 mul sub moveto
TBIL (L*) show
(r,TUBJND) ibLs
TBL (=) show
TBL ( ln {[ 1 + ) show
TBL (b) show ipK
TBL (\050) show
TBIL (Y/Y) show (u) ibLs
TBL (\051] / (1 + b)}) show

x00e y00t 250 sub moveto
TBL ([2b]) show

} if %ifunc=0

ifunc 1 eq {%ifunc=1 CIELAB
x00t y00t 250 sub moveto
TBIL (L*) show
(CIELAB) ibLs
TBL (=116 ) show
TBIL (\050Y/Y) show (n) ibLs TBL (\051) show
(1/3) ebLs
TBL (-16   ) show
TBIL (\050Y) show (n) ibLs
TBL (=100, 0,89) show SL ( \243 ) show
TBIL (Y) show TBL (\051) show

x00e y00t 250 sub moveto
TBL ([2b]) show

%special from TUBJND
%ifunc 0 eq {%ifunc=0 TUBJND
%L1*= d * ln [1 + b(Y/Yu))
x00t y00t moveto
TBIL (L*) show (TUBJND) ibLs
TBL (= d ln [ 1 + ) show
TBL (b) show ipK
TBL (\050) show
TBIL (Y/Y) show (u) ibLs
TBL (\051]) show

x00t 3500 add y00t moveto
TBL (d=) show JNDD cvsshow1x
x00t 4300 add y00t moveto
TBL (b=) show JNDB cvsshow3x

x00e y00t moveto
TBL ([2a]) show

/iout 0 def
iout 1 eq {%iout=1
x00t 850 add y00t 250 sub moveto
%TBIL (L*) show
TBL (=) show
Yu Yn div 0.3333 exp 116 mul cvsshow1x 20 0 rmoveto
TBIL (\050Y/Y) show (u) ibLs TBL (\051) show
(1/3) ebLs
TBL (-16   ) show
TBIL (\050Y) show (u) ibLs
TBL (=18,   0,89) show SL ( \243 ) show
TBIL (Y) show TBL (\051) show

x00e y00t 250 sub moveto
TBL ([2b]) show
} if %iout=1

} if %infunc=1

ychart 0 eq {%ychart=0
xchartl 1 ge {%xchartl>=1
              proz_regu_index

              x00t y00t 500 sub moveto
              TBL
              (regularity index: ) showen
              (regularit\344tsindex: ) showde
              TBIL (g*) show (5) ibLs
              TBL (=) show r5 cvishow (, ) show
              (g*) show (9) ibLs
              TBL (=) show r9 cvishow (, ) show

              x00e 550 sub y00t 500 sub moveto
              TBL ([ISO 15775]) show
             } if %xchartl>=1
            } if %yxchart=0

} if %ioute=0 0:without equations,   1:with equations

xchartl 1 le {%xchartl<=1
tfn %tfw
/x0 4400 def
/y0 1400 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
      } if %xchart<=1

} def %END proz_C02_ALOG_CIELAB

%*****************************************
/proz_regu_index {%BEG proz_regu_index
%assumption Y(1,2,3)ki available
0 1 8 {/i exch def %i=0,8
       xchartl 1 eq {%xchartl=1
                     Y0xki i Y01k i get put
                    } if %xchartl=1
       xchartl 2 eq {%xchartl=2
                     Y0xki i Y02k i get put
                    } if %xchartl=2
       xchartl 3 eq {%xchartl=3
                     Y0xki i Y03k i get put
                    } if %xchartl=3
      } for %i=0,8

%***************************************************
0 2 6 {/i exch def %i=0,2,6
       delki i Y0xki i 2 add get Y0xki i get sub abs put
      } for %i=0,2,6

/MIN 999 def
/MAX 001 def
0 2 6 {/i exch def %i=0,2,6
       delki i get MIN lt {/MIN delki i get def} if
       delki i get MAX gt {/MAX delki i get def} if  
      } for %i=0,2,6

/r5 MIN MAX div 100 mul def

%***************************************************
0 1 7 {/i exch def %i=0,1,7
       delki i Y0xki i 1 add get Y0xki i get sub abs put
      } for %i=0,1,7

/MIN 999 def
/MAX 001 def
0 1 7 {/i exch def %i=0,1,7
       delki i get MIN lt {/MIN delki i get def} if
       delki i get MAX gt {/MAX delki i get def} if
      } for %i=0,1,7

/r9 MIN MAX div 100 mul def

} bind def %END proz_regu_index

/dY1i  401 array def 
/Y1i   401 array def %101(W)+3*101(R,G,B)
/L1*i  401 array def

/X10i 401 array def %log(Xi)

/Y10i 401 array def %L1*i, log(L1*i)
/Y1ui 401 array def %L1*i/Lu, log(L1*i/L1*u)
/Y1xi 401 array def %one of eight above

%without Yref
/X11k 009 array def %x of 9 steps
/Y11k 009 array def %L1*k, log(L1*k) range 0..8
%with Yref
/X12k 009 array def %x of 9 steps
/Y12k 009 array def %L1*k, log(L1*k) range 0..8
%with Yref and linearisation
/X13k 009 array def %x of 9 steps
/Y13k 009 array def %L1*k, log(L1*k) range 0..8
%with exponent relative
/X13ke 009 array def %x of 9 steps
/Y13ke 009 array def %L1*k, log(L1*k) range 0..8
%with exponent relative transfer
/X13kr 009 array def %x of 9 steps
/Y13kr 009 array def %L1*k, log(L1*k) range 0..8

/Y1xki 009 array def
/d1xki 009 array def

%*************************************************
/proz_DECOJY_L1* {%BEG proz_DECOJY_L1*
                 %L1*i = A0/A2 * ln [1 + (A2/A1) * Y]
                 %L1*i = JNDD  * ln [1 + JNDA  ) * Y]
                 /L1* Y JNDA mul 1 add ln JNDD mul def
                } bind def %END proz_DECOJY_L1*
%*************************************************
/proz_DECOJL1*_Y {%BEG proz_DECOJL1*_Y
                 %L1* = A0/A2 * ln [1 + (A2/A1) * Y]
                 %L1* = JNDD  * ln [1 + JNDA    * Y]
                 %e**(L1*/JNDD)=[1+JNDA*Y]
                 %Y=[e**(L1*/JNDD)-1]/JNDA=[e**Y1n 1 sub ]/JNDA
                 %%STOP2
                 /Y1n L1* JNDD div def
                 /Y2n e Y1n exp def
                 /Y Y2n 1 sub JNDA div def
                } bind def %END proz_DECOJL1*_Y

%***************************************************       
/proz_Y1i_dY1i_L1*i_L_0 {%BEG proz_Y1i_dY1i_L1*i_L_0 L=TUBJND
/e 2.7182818 def
/Yn 100 def
/Y1u 18.00 def
%dY = (s + q * Y)/c = (A1 + A2 * Y) / A0
%/JNDC 1.5 def %c=A0
/JNDC 1.0 def %c=A0
/JNDS 0.0170 def %s=A1
%/JNDQ 0.0058 2.0 mul def %q=A2 error
/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
/JNDT JNDC JNDS div def %t=c/s=A0/A1=58,82 for c=1,0
/JNDB JNDA Y1u mul def %b=q/s*Yu=a*Y1u=A2/A1*Y1u=6,141
%/JNDD JNDT JNDA div def %d=t/a=A0/A2=258,6
/JND1 JNDT JNDA div def %d=t/a=A0/A2=172,4 for c=1,0
/JNDD 50.4 JNDB 1 add ln div def

%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) 
%L1*= ln [1 + a Y] * d = ln [1 + (A2/A1) * Y] * (A0/A2)
%  = d * ln [1 + b (Y/Yu)] = 172,4 ln [1 + 6,14 (Y/Yu]
%dL1*/dY = 1 / (1 + a*Y) * a * d) = t / (1 + a*Y) = (A0/A2) / [1 + (A2/A1) * Y]
%for dL1*=1:
%dY = (1 + a*Y) / t = [1 + (A2/A1) * Y] / (A0/A1)

%s=0.0170=A1
%q=0.0058=A2
%c=y1=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

/L1*u Y1u JNDA mul 1 add ln JNDD mul def %A0/A2 * ln [1 + (A2/A1) * Yu] 

i01 1 i02 {/i exch def %i=i01,i02
           Y1i i i put
           %L1*i = A0/A2 * ln [1 + (A2/A1) * Y]
           L1*i i Y1i i get JNDA mul 1 add ln JNDD mul put
           %dY1i = [1 + (A2/A1) * Y] / (A0/A1)
           %dY1i = [1 + JNDA    * Y] / (JNDD*JNDA)
           %     = [1 + 0,3411  * Y] / (25,4*0,3411)
           %     = [1 + 0,6111*(Y/Yu)] / 8,6639
           dY1i i 1 JNDA Y1i i get mul add JNDD JNDA mul div put
          } for %i=i01,i02
          /dY1u   1 JNDA Y1u       mul add JNDD JNDA mul div def
} bind def %END proz_Y1i_dY1i_L1*i_L_0 L=TUBJND

%***************************************************
/proz_Y1i_dY1i_Yxy1i_L_0 {%BEG proz_Y1i_dY1i_Yxy1i_L_0 definition: Y1i, L1*i
%i=0 not available
i01 1 i02 {/i exch def %i=i01,i02
           X10i i i put
           ychart 0 eq {%ychart=0
                        Y10i i L1*i i get put
                        Y1ui i L1*i i get L1*u div put
                       } if %ychart=0
           ychart 1 eq {%ychart=1
                        Y10i i dY1i i get put
                        Y1ui i dY1i i get dY1u div put
                       } if %ychart=1
           ychart 2 eq {%ychart=2
                        Y10i i dY1i i get Y1i i get div put
                        Y1ui i dY1i i get Y1i i get div
                               dY1u       Y1u       div div put
                       } if %ychart=2
           ychart 3 eq {%ychart=3
                        Y10i i Y1i i get dY1i i get div put
                        Y1ui i Y1i i get dY1i i get div
                               Y1u       dY1u       div div put
                       } if %ychart=3
          } for %i=i01,i02

} bind def %END proz_dY1i_Y1i_Yxy1i_L_0

%*********************************************
/proz_9step_TUBJND {%BEG proz_9step_TUBJND
%N of Y=3,6
/YN0 3.6 def
/Y YN0 def
proz_DECOJY_L1*
/L1*N0 L1* def

/YW0 90 def
/Y YW0 def
proz_DECOJY_L1*
/L1*W0 L1* def

/L1*ran L1*W0 L1*N0 sub def
/L1*del L1*ran 8 div def

%-1800 2250 moveto
%L1*N0   cvsshow2 (, ) show
%L1*W0   cvsshow2 (, ) show
%L1*ran cvsshow2 (, ) show
%L1*del cvsshow2 (, ) show

%********************************************
xchartl 1 eq {%xchartl=1

0 1 8 {/k exch def %k=0,8
       /L1* L1*N0 L1*del k mul add def
       Y11k k L1* put
       proz_DECOJL1*_Y /Xout Y def
       X11k k Xout put
      } for %k=0,8

newpath
tfg
0 1 8 {/k exch def %k=0,8
       X11k k get XLIN 0 eq {log} if MULX mul
       Y11k k get L1*u div MULY2 mul 040 0 360 arc fill
       newpath
      } for %k=0,8
tfn
} if %xchartl=1

%*************************************************
xchartl 2 eq {%xchartl=2

/Yref 90.0 def
0 1 8 {/k exch def %k=0,8
       /L1* L1*N0 L1*del k mul add def
       Y11k k L1* put
       proz_DECOJL1*_Y /Xout Y def
       X11k k Xout put
%       0500 2500 250 k mul sub moveto
%       Y11k k get cvsshow2 (, ) show
%       X11k k get cvsshow2 (, ) show
      } for %k=0,8
       /Yu2 X11k 4 get def

0 1 8 {/k exch def %k=0,8
       /L1* L1*N0 L1*del k mul add def
       Y11k k L1* put
       proz_DECOJL1*_Y /Xout Y def
       X11k k Xout put
       X12k k X11k k get Yref add Yu2 Yref add div Yu2 mul put

       /Y X12k k get def
       proz_DECOJY_L1* /Yout L1* def
       Y12k k Yout put

%       -1800 2000 250 k mul sub moveto
%       X12k k get cvsshow2 (, ) show
%       Y12k k get cvsshow2 (, ) show
%       Y12k k get L1*u div cvsshow2 (, ) show

      } for %k=0,8

newpath
tfr
0 2 8 {/k exch def %k=0,8
       X12k k get XLIN 0 eq {log} if MULX mul
       Y12k k get L1*u div MULY2 mul 040 0 360 arc fill
       newpath
      } for %k=0,8
tfn

/x1l1 X12k 0 get XLIN 0 eq {log} if MULX mul def
/y1l1 Y12k 0 get L1*u div MULY2 mul def
/x1l2 X12k 8 get XLIN 0 eq {log} if MULX mul def
/y1l2 Y12k 8 get L1*u div MULY2 mul def
[100] 0 setdash
tfb
XLIN 0 eq {/x1l3 3000 log MULX mul def}
          {/x1l3 0200     MULX mul def} ifelse
x1l1 y1l1 moveto x1l3 y1l1 lineto stroke
x1l2 y1l2 moveto x1l3 y1l2 lineto stroke
[ ] 0 setdash
TBL
x1l3 1200 sub y1l1 50 add moveto
(device black) showea
(Ger\344teschwarz) showde
x1l3 1200 sub y1l2 50 add moveto
(device white) showea
(Ger\344tewei\337) showde

} if %xchartl=2

%*************************************************
xchartl 3 eq {%xchartl=3
/Yref 90.0 def
0 1 8 {/k exch def %k=0,8
       /L1* L1*N0 L1*del k mul add def
       Y11k k L1* put
       proz_DECOJL1*_Y /Xout Y def
       X11k k Xout put
%       0500 2500 250 k mul sub moveto
%       Y11k k get cvsshow2 (, ) show
%       X11k k get cvsshow2 (, ) show
      } for %k=0,8
       /Yu2 X11k 4 get def

0 1 8 {/k exch def %k=0,8
       /L1* L1*N0 L1*del k mul add def
       Y11k k L1* put
       proz_DECOJL1*_Y /Xout Y def
       X11k k Xout put
       X12k k X11k k get Yref add Yu2 Yref add div Yu2 mul put

       /Y X12k k get def
       proz_DECOJY_L1* /Yout L1* def
       Y12k k Yout put

%       -1800 2000 250 k mul sub moveto
%       X12k k get cvsshow2 (, ) show
%       Y12k k get cvsshow2 (, ) show
%       Y12k k get L1*u div cvsshow2 (, ) show

      } for %k=0,8

0 1 8 {/k exch def
       Y13kr k Y12k k get Y12k 0 get sub
               Y12k 8 get Y12k 0 get sub div put
       Y13ke k Y13kr k get 1 1.6 div exp put
       Y13k  k Y12k 0 get
               Y12k 8 get Y12k 0 get sub Y13ke k get mul add put

       /L1* Y13k k get def
       proz_DECOJL1*_Y
       /Yout Y def
       X13k k Yout put

%       1000 2000 250 k mul sub moveto
%       Y13kr k get cvsshow2 (, ) show
%       Y13ke k get cvsshow2 (, ) show
%       Y13k  k get cvsshow2 (, ) show
%       X13k  k get cvsshow2 (, ) show
      } for %k=0,8

ioutt 1 eq {%ioutt 0:without transfer, 1:with transfer
newpath
tfr
0 1 8 {/k exch def %k=0,8
       /X3n X13k k get XLIN 0 eq {log} if MULX mul def
       /Y3n Y13k k get L1*u div MULY2 mul def   
       /x1n X11k k get XLIN 0 eq {log} if MULX mul def
       /Y1n Y11k k get L1*u div MULY2 mul def

       /delX x1n X3n sub def
       /delY Y1n Y3n sub def
       /delR delX 0.5 mul dup mul
             delY 0.5 mul dup mul add sqrt def

       /XMn X3n delX 0.5 mul add def
       /YMn Y3n delY 0.5 mul add def

       x1n Y1n moveto X3n Y3n lineto stroke

       /delR delX 0.5 mul dup mul 
             delY 0.5 mul dup mul add sqrt def

       /alph  delX delY atan def
       /alphp alph 180 add def
       XMn YMn delR 0 360 arc stroke
      } for %k=0,8

} if %ioutt=1 0:without transfer, 1:with transfer

%again of xchartl=1
0 1 8 {/k exch def %k=0,8
       /L1* L1*N0 L1*del k mul add def
       Y11k k L1* put
       proz_DECOJL1*_Y /Xout Y def
       X11k k Xout put
      } for %k=0,8
newpath
tfg
0 1 8 {/k exch def %k=0,8
       X11k k get XLIN 0 eq {log} if MULX mul
       Y11k k get L1*u div MULY2 mul 040 0 360 arc fill
       newpath
      } for %k=0,8
tfn

%xchartl=3 linearized
tfb
newpath
0 2 8 {/k exch def %k=0,8
       X13k k get XLIN 0 eq {log} if MULX mul
       Y13k k get L1*u div MULY2 mul 040 0 360 arc fill
       newpath
      } for %k=0,8
tfn

/x1l1 X13k 0 get XLIN 0 eq {log} if MULX mul def
/y1l1 Y13k 0 get L1*u div MULY2 mul def
/x1l2 X13k 8 get XLIN 0 eq {log} if MULX mul def
/y1l2 Y13k 8 get L1*u div MULY2 mul def
[100] 0 setdash
tfb
XLIN 0 eq {/x1l3 3000 log MULX mul def}
          {/x1l3 0200     MULX mul def} ifelse
x1l1 y1l1 moveto x1l3 y1l1 lineto stroke
x1l2 y1l2 moveto x1l3 y1l2 lineto stroke
[ ] 0 setdash
TBL
x1l3 1200 sub y1l1 50 add moveto
(device black) showea
(Ger\344teschwarz) showde
x1l3 1200 sub y1l2 50 add moveto
(device white) showea
(Ger\344tewei\337) showde

} if %xchartl=3

} bind def %END proz_9step_TUBJND

%*********************************************************************
/proz_C02_ALOG_TUBJND {%BEG proz_C02_ALOG_TUBJND

/xshift 100 def
XLIN 0 eq {/xtr 2000 def}
          {/xtr xshift MULX mul def} ifelse
/ytr 0000 def

%BEG translate
 xtr ytr translate %new cero point shift 50 MULX

%0 not available
i01 1 i02 {/i exch def %i=i01,i02
           Y1xi i Y1ui i get put
          } for %i=i01,i02

50 setlinewidth
0 1 0 {/je exch def %je=0,1
je 0 eq {0 0 1 setrgbcolor} if
%je 1 eq {0 0 1 setrgbcolor [100] 0 setdash} if
/ix1 001 def
/ix2 180 def
ix1 1 ix2 {/i exch def %i=ix1,ix2
           X10i i get XLIN 0 eq {log} if MULX mul
           Y1xi i get MULY2 mul
           i ix1 eq {moveto} if
           i ix1 1 add ge
           i ix2 1 sub le and {lineto} if
           i ix2 eq {stroke} if
          } for %i=ix1,ix2
} for %je=0,1

ychart 0 eq {%ychart=0
50 setlinewidth
0 1 2 {/k exch def %k=0,3
       k 0 eq {/i 04 def} if
       k 1 eq {/i 18 def} if
       k 2 eq {/i 90 def} if

       XLIN 0 eq {%XLIN=0
       %shift ca. 0.12*50 or 0.12*1
       xchartl 0 eq
       xchartl 1 eq or
       xchartl 2 eq or
       xchartl 3 eq or {X10i i get log MULX mul 400 sub 700 add
                        Y1xi i get 0.12 add MULY2 mul 050 sub 
                        moveto} if
                  }%XLIN=0
                  {%XLIN=1
       %shift ca. 0.12*50 or 0.12*1
       xchartl 0 eq
       xchartl 1 eq or
       xchartl 2 eq or
       xchartl 3 eq or {X10i i get MULX mul 700 sub 800 add
                        Y1xi i get 0.12 add MULY2 mul 250 sub
                        moveto} if
                  }ifelse %XLIN=1
       TBK
       Y1xi i get cvsshow2x
       0 setgray
       newpath
       } for %k=0,2
      } if %ychart=0

%[ ] 0 setdash
0 setgray

%******************************************************
XLIN 0 eq {%XLIN=0
           /x1l0  0.01 log MULX mul def
           /x1l1  3.60 log MULX mul def
           /xl1m 18.00 log MULX mul def
           /x1l2 90.00 log MULX mul def
           /y1l0       0 MULY2 mul def
           /y1l1 Y1ui 04 get MULY2 mul def
           /y1lm Y1ui 18 get MULY2 mul def
           /y1l2 Y1ui 90 get MULY2 mul def
          }%XLIN=0
          {%XLIN=1
           /x1l0 xshift neg MULX mul def
           /x1l1  3.60 MULX mul def
           /xl1m 18.00 MULX mul def
           /x1l2 90.00 MULX mul def
           /y1l0       0 MULY2 mul def
           /y1l1 Y1ui 04 get MULY2 mul def
           /y1lm Y1ui 18 get MULY2 mul def
           /y1l2 Y1ui 90 get MULY2 mul def
          } ifelse %XLIN=0,1

%BEG scale-test
%0 0 1 setrgbcolor
%000 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%050 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%100 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%150 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%200 MULX mul 0 moveto 0 002 MULY2 mul rlineto stroke
%0 setgray
%END scale-test

/iout 0 def
iout 1 eq {%iout=1
tfz %tfz
[100] 0 setdash
x1l0 y1lm moveto x1lm y1lm lineto x1lm y1l0 lineto stroke
tfg
x1l1 y1l0 moveto x1l2 y1l0 lineto stroke
x1l0 y1l1 moveto x1l0 y1l2 lineto stroke
tfr
XLIN 0 eq {/x1l3 3000 log MULX mul def}
          {/x1l3 0200     MULX mul 200 sub def} ifelse
x1l1 y1l1 moveto x1l3 y1l1 lineto stroke
x1l2 y1l2 moveto x1l3 y1l2 lineto stroke
[ ] 0 setdash
TBL
x1l3 0700 sub y1l1 50 add moveto
(black) showea
(Schwarz) showde
x1l3 0700 sub y1l2 50 add moveto
(white) showea
(Wei\337) showde

iouto 1 eq {%iouto=1 %iouto 0:without output text, 1:with output text

%text contrast, steps
tfn
TBL
xchartl 1 eq {%xchartl=1
x1l0 50 add y1l2 70 add moveto
(intended output:) showen
(angestrebte Ausgabe:) showde
x1l0 50 add y1l2 200 sub moveto
(equally spaced 9 steps in ) showen
(gleichabst\344ndige 9 Stufen in ) showde
ifunc 0 eq {(TUBJND) show}
           {(CIELAB) show} ifelse
x1l0 50 add y1l2 400 sub moveto
(for contrast ) showen
(f\374r Kontrast ) showde
TBIL (C) show (Y) ibLs TBL (=25:1) show
             } if %xchartl=1

xchartl 2 eq {%xchartl=2
x1l0 50 add y1l2 70 add moveto
(non linearized real output:) showen
(nichtlinerasierte reale Ausgabe:) showde
x1l0 50 add y1l2 200 sub moveto
(nonequally spaced 9 steps) showen
(ungleich gestufte 9 Stufen) showde
x1l0 50 add y1l2 400 sub moveto
(for contrast ) showen
(f\374r Kontrast ) showde
TBIL (C) show (Y) ibLs TBL (=2:1) show
             } if %xchartl=2

xchartl 3 eq {%xchartl=3
x1l0 50 add y1l2 70 add moveto
(linearized real output:) showen
(linerasierte reale Ausgabe:) showde
x1l0 50 add y1l2 200 sub moveto
(equally spaced 9 steps in ) showen
(gleich gestufte 9 Stufen in ) showde
ifunc 0 eq {(TUBJND) show}
           {(CIELAB) show} ifelse
x1l0 50 add y1l2 400 sub moveto
(after contrast transfer ) showen
(nach Kontrasttransfer ) showde
TBIL (C) show (Y) ibLs TBL
(=25:1 to 2:1) showen
(=25:1 nach 2:1) showde
             } if %xchartl=3

} if %iouto=1 %iouto 0:without output text, 1:with output text

tfg
x1l1 y1l0 moveto x1l1 y1l1 lineto x1l0 y1l1 lineto stroke
x1l2 y1l0 moveto x1l2 y1l2 lineto x1l0 y1l2 lineto stroke
tfn
XLIN 0 eq {%XLIN=0
x1l1 050 add y1l0 250 add moveto TBIL (Y) show (N) ibLs TBL (=3,6) show
x1l2 050 add y1l0 250 add moveto TBIL (Y) show (W) ibLs TBL (=90) show
          }%XLIN=0
          {%XLIN=1
x1l1 750 sub y1l0 100 add moveto TBIL (Y) show (N) ibLs TBL (=3,6) show
x1l2 050 add y1l0 100 add moveto TBIL (Y) show (W) ibLs TBL (=90) show
          } ifelse %XLIN=0,1

tfn
XLIN 0 eq {%XLIN=0
xlm 50 add y1l0 250 add moveto TBIL (Y) show (u) ibLs TBL (=18) show
          }%XLIN=0
          {%XLIN=1
xlm 050 add y1l0 100 add moveto TBIL (Y) show (u) ibLs TBL (=18) show
          } ifelse %XLIN=0,1

%C01
/X10 x1l0 50 add def
tfn
X10 y1lm 120 add moveto
TBIL (L*) show ifunc 0 eq {(r,TUBJND) ibLs}
                          {(r,CIELAB) ibLs} ifelse
TBL (=1) show
/FY1iuP1 L1*i iu 1 add get L1*i iu get div def
/FY1iu 1 def
TBIL (, m) show (u) ibLs TBL (=) show
Y1xi iu 1 add get     Y1xi iu get     sub
X10i iu 1 add get log X10i iu get log sub div cvsshow2x

X10 y1lm 200 sub moveto
TBIL (L*) show ifunc 0 eq {(u,TUBJND) ibLs}
                          {(u,CIELAB) ibLs} ifelse
TBL (=) show L1*u cvishow
TBIL (, Y) show (u) ibLs
TBL (=) show Yu cvishow

%ifunc 0 eq {
proz_9step_TUBJND
%} if
%ifunc 1 eq {
%plot_9step_CIELAB
%} if

newpath
0 1 2 {/k exch def %k=0,2
       k 0 eq {/i 04 def} if
       k 1 eq {/i 18 def} if
       k 2 eq {/i 90 def} if
%       xchartl 0 eq {%xchartl=0
       tfb
       X10i i get XLIN 0 eq {log} if MULX mul
       Y1ui i get MULY2 mul 060 0 360 arc fill
%                    } if %xchartl=0
      } for %k=0,2
newpath

%END translate
 xtr neg ytr neg translate %new cero point shift 50 MULX

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

ioute 1 eq {%ioute=0 0:without equations,   1:with equations
tfr %C02

/X10t 0100 def
/X10e 5200 def
/y10t 2700 def
/ydel 0270 def

ifunc 0 eq {%ifunc=0 TUBJND
%L1*= d * ln [1 + b(Y/Yu))
X10t y10t moveto
TBIL (L*) show (TUBJND) ibLs
TBL (= d ln [ 1 + ) show
TBL (b) show ipK
TBL (\050) show
TBIL (Y/Y) show (u) ibLs
TBL (\051]) show

X10t 3500 y10t moveto
TBL (d=) show JNDD cvsshow1x
X10t 4300 add y10t moveto
TBL (b=) show JNDB cvsshow3x

X10e y10t moveto
TBL ([2a]) show

X10t y10t ydel 1 mul sub moveto
TBIL (L*) show
(r,TUBJND) ibLs
TBL (=) show
TBL ( ln {[ 1 + ) show
TBL (b) show ipK
TBL (\050) show
TBIL (Y/Y) show (u) ibLs
TBL (\051] / (1 + b)}) show

X10e y10t 250 sub moveto
TBL ([2b]) show

} if %ifunc=0

ifunc 1 eq {%ifunc=1 CIELAB
X10t y10t moveto
TBIL (L*) show
(CIELAB) ibLs
TBL (=116 ) show
TBIL (\050Y/Y) show (n) ibLs TBL (\051) show
(1/3) ebLs
TBL (-16  ) show
TBIL (\050Y) show (n) ibLs
TBL (=100, 0,89) show SL ( \243 ) show
TBIL (Y) show

X10e y10t moveto
TBL ([2a]) show

X10t 850 add y10t 250 sub moveto
%TBIL (L*) show
TBL (=) show
Yu Yn div 0.3333 exp 116 mul cvsshow1x 20 0 rmoveto
TBIL (\050Y/Y) show (u) ibLs TBL (\051) show
(1/3) ebLs
TBL (-16   ) show
TBIL (\050Y) show (u) ibLs
TBL (=18,   0,89) show SL ( \243 ) show
TBIL (Y) show TBL (\051) show

X10e y10t 250 sub moveto
TBL ([2b]) show

} if %infunc=1

ychart 0 eq {%ychart=0
xchartl 1 ge {%xchartl>=1
              proz_regu1_index

              X10t y10t 500 sub moveto
              TBL
              (regularity index: ) showen
              (regularit\344tsindex: ) showde
              TBIL (g*) show (5) ibLs
              TBL (=) show r5 cvishow (, ) show
              (g*) show (9) ibLs
              TBL (=) show r9 cvishow (, ) show

              X10e 550 sub y10t 500 sub moveto
              TBL ([ISO 15775]) show
             } if %xchartl>=1
            } if %ychart=0

} if %ioute=0 0:without equations,   1:with equations

xchartl 1 le {%xchartl<=1
tfn %tfw
/X10 4400 def
/y10 1400 def
X10 y10 moveto
1000 0 rlineto stroke
tfg
[100] 0 setdash
X10 y10 moveto
1000 0 rlineto stroke
[ ] 0 setdash

tfn %tfw
X10 y10 0.8 ydel mul sub moveto
TBL (application) showen
(Anwendungs\255) showde
X10 y10 1.5 ydel mul sub moveto
TBL (range) showen
(bereich) showde
      } if %xchart<=1

} if %iout=1

} def %END proz_C02_ALOG_TUBJND

%*****************************************
/proz_regu1_index {%BEG proz_regu1_index
%assumption Y(1,2,3)ki available
0 1 8 {/i exch def %i=0,8
       xchartl 1 eq {%xchartl=1
                     Y1xki i Y11k i get put
                    } if %xchartl=1
       xchartl 2 eq {%xchartl=2
                     Y1xki i Y12k i get put
                    } if %xchartl=2
       xchartl 3 eq {%xchartl=3
                     Y1xki i Y13k i get put
                    } if %xchartl=3
      } for %i=0,8

%***************************************************
0 2 6 {/i exch def %i=0,2,6
       d1xki i Y1xki i 2 add get Y1xki i get sub abs put
      } for %i=0,2,6

/MIN 999 def
/MAX 001 def
0 2 6 {/i exch def %i=0,2,6
       d1xki i get MIN lt {/MIN d1xki i get def} if
       d1xki i get MAX gt {/MAX d1xki i get def} if  
      } for %i=0,2,6

/r5 MIN MAX div 100 mul def

%***************************************************
0 1 7 {/i exch def %i=0,1,7
       d1xki i Y1xki i 1 add get Y1xki i get sub abs put
      } for %i=0,1,7

/MIN 999 def
/MAX 001 def
0 1 7 {/i exch def %i=0,1,7
       d1xki i get MIN lt {/MIN d1xki i get def} if
       d1xki i get MAX gt {/MAX d1xki i get def} if
      } for %i=0,1,7

/r9 MIN MAX div 100 mul def

} bind def %END proz_regu1_index

%***************************************************
/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

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

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

4 /Times-ISOL1 FS
%74 86 moveto (eef30-8a) show
%xchart 0 eq {(R) show}
%            {deintp colorm 2 mul add cvishow} ifelse

72 90 translate
0.01 MM dup scale

20 setlinewidth
%0 0 12250 08600 1.0 1.0 1.0 colrecfi %area white grey
%0 0 12250 08600 0.0 0.0 0.0 colrecst %Rahmen Schwarz

/ychart 0 def %0:L*i/L*u, 1:dY/Yu, 2:(dY/Y)/(dY/Y)u, 3:(Y/dY)/(Y/dY)u  
/XLIN 1 def %0:XlOG, 1:XLIN
/YLIN 1 def %0:YLOG, 1:YLIN
/ifunc 1 def %0:TUBJND (not full included), 1:CIELAB
/iouto 1 def %iouto 0:without output text, 1:with output text
/ioute 1 def %ioute 0:without equations,   1:with equations
/ioutd 1 def %ioutd 0:without device black 1:with device black
/ioutt 0 def %ioutt 0:without transfer,    1:with transfer

/i01 001 def
%/i02 180 def %CIELAB
/i02 360 def %CIELAB
%/i02 180 def %TUBJND
%/i02 360 def %TUBJND

XLIN 0 eq {%XLIN=0
           /MULX  1000 def
           /MULY  1000 def
           /MULY1   20 def
           /MULY2 1000 def %=MULY1*50
          }%XLIN=0
          {%XLIN=1
           /MULX    20 def
           /MULY    20 def
           /MULY1   20 def
           /MULY2 1000 def %=MULY1*50
          }ifelse %XLIN=1

%***************************************************
/c30 3.0 def %CIELAB
/e10D30 1.0 3.0 div def
/e20D30 2.0 3.0 div def
/iu 018 def %TUBJND
/Yn 100 def
/Yu  018 def
/Y1u 018 def

%/Y Y1u def Y proz_DECOJY_L1*
/L1*u 1 6.141 add ln 25.2 mul def

%/Y Yu def Y proz_DECODY_L*
/L*u 65.5 16 sub def 

proz_Yi_dYi_L*i_C_0  %main used

proz_Yi_dYi_Yxyi_C_0

proz_Y1i_dY1i_L1*i_L_0  %used

proz_Y1i_dY1i_Yxy1i_L_0

%1000 2000 500 add moveto
%TBIL (L*4,18,90: ) show
%L*i 04 get cvishow (, ) show
%L*i 18 get cvishow (, ) show
%L*i 90 get cvishow

 /xchartl 7 def
%0 1 03 {/xchartl   exch def %xchartl=0,03
%/xchartl 0 def
gsave

%  xchartl   0 eq {  100  4480 translate} if
%  xchartl   1 eq { 6150  4480 translate} if
%  xchartl   2 eq {  100  0220 translate} if
%  xchartl   3 eq { 6150  0220 translate} if

/xchartlp 5 def %1:Y10-0_3, 5:Y10-5_8
100 /Times-ISOL1 FS
0 setgray
50 -100 moveto (eef30-) show
xchartl xchartlp add cvishow
(a) show %a
%(_) show xchart 1 add cvishow

20 setlinewidth
/xwidth 6000 def
/ywidth 4000 def
25 setlinewidth
1 setgray
0 0 moveto xwidth     0 rlineto 0 ywidth rlineto
           xwidth neg 0 rlineto closepath fill

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

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

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

0 0 xwidth ywidth 0.0 0.0 0.0 colrecst %frame black

tfn %tfw
/xtr0 280 def
/ytr0 280 def

xtr0 ytr0 translate

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

5000 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
XLIN 0 eq {%XLIN=0
           /tx [(-2)    (-1)  (  0) (  1) (  2) (  3) ] def
           /txl [(0,01) (0,1) (  1) ( 10) (100) (1000)] def
          }%XLIN=0
          {%XLIN=1
%           /tx [(-1) (  0) (  1) (  2) (  3) (  4)] def
           /txl [( )  ( )   (  0) ( 50) (100) (150)] def
          } ifelse %XLIN=0,1

XLIN 0 eq {%XLIN=0
%!x-axis: 100 Einheiten = 0600 Skalen-Einheiten
0 1 5 {/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 i 5 eq {100 sub} if
                070 moveto txl i get exec show} if
        tfn
        ixl   60 moveto 0 -120 rlineto stroke
     } for
          } if %XLIN=0

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

tfn
/ixtt 5.0 1000 mul def
/iytt -200 def
ixtt 100 add iytt moveto
XLIN 0 eq {%XLIN=0
           TBL (log) show 20 0 rmoveto
           TBIL (Y) show
           ixtt 370 add iytt 300 add moveto
           tfb
           TBIL (Y) show
          }%XLIN=0
          {%XLIN=1
           tfb
           TBIL (Y) show
          } ifelse %XLIN=0,1

%!y-achse: 100 S-Einheiten = 1000 Skalen-Einheiten

%ifunc 0 eq {%ifunc=0 TUBJND
/ty0[(    0)(  500) (1000)  (1500)  ] def
/ty1[(    0)(    1)(    2)(    3)] def
%           } if %ifunc=0 TUBJND

/j1y 0 def
/j2y 3 def
TBL
j1y 1 j2y {/j exch def
           /jyt {-50 j j1y sub 1000 mul add} def
           /jyl {000 j j1y sub 1000 mul add} def
           tfb
           -400 jyt moveto
           xchartl 0 eq {ty1 j get show} if
           xchartl 1 eq {ty1 j get show} if
           xchartl 2 eq {ty1 j get show} if
           xchartl 3 eq {ty1 j get show} if
           tfn
           -60 jyl moveto 120 0 rlineto stroke
          } for

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

%text0********************************************************
tfn %tfw
/ytt1 3775 def
/ytt2 ytt1 250 sub def
/ytt3 ytt1 500 sub def
ychart 0 eq {%ychart=0
             050 xtr0 sub ytt1 ytr0 sub moveto
             YLIN 0 eq {TBK (log \050) show} if
             TBIK (L*/) show 20 0 rmoveto TBIK (L*) show (u) ibKs
             YLIN 0 eq {TBK (\051) show} if
             050 xtr0 sub ytt2 ytr0 sub moveto
             TBK (CIELAB & ) show tfb (TUBJND) show tfn

             /x0te 2600 def
             x0te xtr0 sub ytt1 ytr0 sub 000 sub moveto
             TBK
             (relative lightness ) showen
             (Relative Helligkeit ) showde
             TBIK (L*/) show 20 0 rmoveto TBIK (L*) show (u) ibKs
             x0te xtr0 sub ytt2 ytr0 sub moveto
             TBK
             (normalized to the) showen
             (normiert f\374r die) showde

             x0te xtr0 sub ytt3 ytr0 sub moveto
             (background lightness ) showen
             (Umgebungshelligkeit ) showde
             TBIK (L*) show (u) ibKs
            } if %ychart=0

%text1********************************************************
ychart 1 eq {%ychart=1
             tfn %tfw
             050 xtr0 sub ytt1 ytr0 sub moveto
             YLIN 0 eq {TBK (log\050) show} if
             SM (D) show 20 0 rmoveto
             TBIK (Y) show TBK (/) show SM (D) show
             TBIK (Y) show (u) ibKs
             YLIN 0 eq {TBK (\051) show} if
             050 xtr0 sub ytt2 ytr0 sub moveto
             TBK (CIELAB & ) show tfb (TUBJND) show tfn

             2400 xtr0 sub ytt1 ytr0 sub moveto
             TBK (CIE tristimulus value difference) showen
             (CIE\255Normfarbwertdifferenz) showde

             2400 xtr0 sub ytt2 ytr0 sub moveto
             SM (D) show 20 0 rmoveto TBIK (Y) show TBK
             ( normalized to ) showen
             ( normiert f\374r ) showde
             SM (D) show 20 0 rmoveto TBIK (Y) show (u) ibKs TBK
            } if %ychart=1

%text2********************************************************
ychart 2 eq {%ychart=2
             tfn %tfw
             050 xtr0 sub ytt1 ytr0 sub moveto
             YLIN 0 eq {TBK (log [) show} if
             TBK (\050) show SM (D) show
             TBIK (Y/Y) show TBK (\051 / \050) show SM (D) show
             TBIK (Y/Y\051) show (u) ibKs
             YLIN 0 eq {TBK (]) show} if
             050 xtr0 sub ytt2 ytr0 sub moveto
             TBK (CIELAB & ) show tfb (TUBJND) show tfn

             2800 xtr0 sub ytt1 ytr0 sub moveto
             TBK (CIE) show
             TBIK (\255Y) show TBK
             ( sensitivity) showen
             (\255Empfindlichkeit) showde

             2800 xtr0 sub ytt2 ytr0 sub moveto
             (normalized to ) showen
             (normiert f\374r ) showde
             TBIK (\050) show SM (D) show TBIK (Y/Y) show
             TBIK (\051) show (u) ibKs
            } if %ychart=2

%text3********************************************************
ychart 3 eq {%ychart=3
             tfn %tfw
             050 xtr0 sub ytt1 ytr0 sub moveto
             YLIN 0 eq {TBK (log [) show} if
             TBK (\050) show TBIK (Y/) show SM (D) show
             TBIK (Y) show (\051 / \050) show
             TBIK (Y/) show SM (D) show
             TBIK (Y\051) show (u) ibKs
             YLIN 0 eq {TBK (] ) show} if
             050 xtr0 sub ytt2 ytr0 sub moveto
             TBK (CIELAB & ) show tfb (TUBJND) show tfn

             2800 xtr0 sub ytt1 ytr0 sub moveto
             TBK (CIE) show
             TBIK (\255Y) show TBK
             ( contrast) showen
             (\255Kontrast) showde

             2800 xtr0 sub ytt2 ytr0 sub moveto
             (normalized to ) showen
             (normiert f\374r ) showde
             TBIK (\050Y/) show SM (D) show TBIK (Y) show
             TBIK (\051) show (u) ibKs
            } if %ychart=3
%end_text0_3**********************************************************

/y0del 100 def
50 setlinewidth

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

xchartl 00 eq {proz_C02_ALOG_CIELAB
               proz_C02_ALOG_TUBJND} if   %XLIN=0
xchartl 01 eq {proz_C02_ALOG_CIELAB
               proz_C02_ALOG_TUBJND} if   %XLIN=1
xchartl 02 eq {proz_C02_ALOG_CIELAB
               proz_C02_ALOG_TUBJND} if   %XLIN=0
xchartl 03 eq {proz_C02_ALOG_CIELAB
               proz_C02_ALOG_TUBJND} if   %XLIN=1

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

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

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

%special space for 'xm03'PROZ0.COM 2x before/after xchartl

%  xchartl   0 eq {  100 neg  4480 neg translate} if
%  xchartl   1 eq { 6150 neg  4480 neg translate} if
%  xchartl   2 eq {  100 neg  0220 neg translate} if
%  xchartl   3 eq { 6150 neg  0220 neg translate} if

grestore
%} for %xchartl=0,03

showpage
grestore

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