Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Source Code
elemental pure subroutine rgb_to_xyz(r,g,b,x,y,z)integer(ik),intent(in)::r,g,breal(rk),intent(out)::x,y,zreal(rk)::rn,gn,bn! Normalize RGB values to the range [0, 1]rn=real(r,kind=rk)/255.0_rkgn=real(g,kind=rk)/255.0_rkbn=real(b,kind=rk)/255.0_rk! Apply gamma correctionif(rn<=0.04045_rk)thenrn=rn/12.92_rkelsern=((rn+0.055_rk)/1.055_rk)**2.4_rkend if if(gn<=0.04045_rk)thengn=gn/12.92_rkelsegn=((gn+0.055_rk)/1.055_rk)**2.4_rkend if if(bn<=0.04045_rk)thenbn=bn/12.92_rkelsebn=((bn+0.055_rk)/1.055_rk)**2.4_rkend if! Convert RGB to XYZ using defined transformation matrixx=0.4124564_rk*rn+0.3575761_rk*gn+0.1804375_rk*bny=0.2126729_rk*rn+0.7151522_rk*gn+0.0721750_rk*bnz=0.0193339_rk*rn+0.1191920_rk*gn+0.9503041_rk*bnx=x*100.0_rky=y*100.0_rkz=z*100.0_rkend subroutine rgb_to_xyz