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 xyz_to_rgb(x,y,z,r,g,b)real(rk),intent(in)::x,y,zinteger(ik),intent(out)::r,g,breal(rk)::rn,gn,bnreal(rk)::x1,y1,z1x1=x/100.0_rky1=y/100.0_rkz1=z/100.0_rk! Convert XYZ to linear RGBrn=3.2404542_rk*x1-1.5371385_rk*y1-0.4985314_rk*z1gn=-0.9692660_rk*x1+1.8760108_rk*y1+0.0415560_rk*z1bn=0.0556434_rk*x1-0.2040259_rk*y1+1.0572252_rk*z1! Apply gamma correctionif(rn<=0.0031308_rk)thenrn=12.92_rk*rnelsern=1.055_rk*(rn**(1.0_rk/2.4_rk))-0.055_rkend if if(gn<=0.0031308_rk)thengn=12.92_rk*gnelsegn=1.055_rk*(gn**(1.0_rk/2.4_rk))-0.055_rkend if if(bn<=0.0031308_rk)thenbn=12.92_rk*bnelsebn=1.055_rk*(bn**(1.0_rk/2.4_rk))-0.055_rkend if! Scale and convert to integer RGB valuesr=nint(rn*255.0_rk,kind=ik)g=nint(gn*255.0_rk,kind=ik)b=nint(bn*255.0_rk,kind=ik)end subroutine xyz_to_rgb