(* ************************************************************ *)
(* 
 EXAMPLES 
*)
(* ************************************************************ *)

(*
 The following commands allow for the computation of the numerical
 results provided in the paper.
*)

(* example: "running":

 lamex = LamExpl[asMz/.NumDef,Mz/.NumDef,5,3]
 AlphasLam[lamex,lamex*3/2,5,3]

 lamim = LamImpl[asMz/.NumDef,Mz/.NumDef,5,3]
 AlphasLam[lamim,Mb/.NumDef,5,3]

 AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,3]

 (* remaining numbers needed for table *)
    
 lamex = LamExpl[asMz/.NumDef,Mz/.NumDef,5,1]
 AlphasLam[lamex,Mb/.NumDef,5,1]
 lamex = LamExpl[asMz/.NumDef,Mz/.NumDef,5,2]
 AlphasLam[lamex,Mb/.NumDef,5,2]
 lamex = LamExpl[asMz/.NumDef,Mz/.NumDef,5,4]
 AlphasLam[lamex,Mb/.NumDef,5,4]
 
 lamim = LamImpl[asMz/.NumDef,Mz/.NumDef,5,1]
 AlphasLam[lamim,Mb/.NumDef,5,1]
 lamim = LamImpl[asMz/.NumDef,Mz/.NumDef,5,2]
 AlphasLam[lamim,Mb/.NumDef,5,2]
 lamim = LamImpl[asMz/.NumDef,Mz/.NumDef,5,4]
 AlphasLam[lamim,Mb/.NumDef,5,4]

 AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,1]
 AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,2]
 AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,4]

 AlphasExact[asMz/.NumDef,Mz/.NumDef, 1 ,5,1]
 AlphasExact[asMz/.NumDef,Mz/.NumDef, 1 ,5,2]
 AlphasExact[asMz/.NumDef,Mz/.NumDef, 1 ,5,3]
 AlphasExact[asMz/.NumDef,Mz/.NumDef, 1 ,5,4]
 
 (* bottom mass *)

 ex1=mMS2mMS[ 3.97, AlphasExact[asMz/.NumDef,Mz/.NumDef, 3.97 ,5, 1 ], asMz/.NumDef,5, 1 ]
 ex2=mMS2mMS[ 3.97, AlphasExact[asMz/.NumDef,Mz/.NumDef, 3.97 ,5, 2 ], asMz/.NumDef,5, 2 ]
 ex3=mMS2mMS[ 3.97, AlphasExact[asMz/.NumDef,Mz/.NumDef, 3.97 ,5, 3 ], asMz/.NumDef,5, 3 ]
 ex4=mMS2mMS[ 3.97, AlphasExact[asMz/.NumDef,Mz/.NumDef, 3.97 ,5, 4 ], asMz/.NumDef,5, 4 ]

 mMS2mOS[3.97,{},AlphasExact[asMz/.NumDef,Mz/.NumDef, 3.97 ,5, 1 ] , 3.97 ,5,1]
 mMS2mOS[3.97,{},AlphasExact[asMz/.NumDef,Mz/.NumDef, 3.97 ,5, 2 ] , 3.97 ,5,2]
 mMS2mOS[3.97,{},AlphasExact[asMz/.NumDef,Mz/.NumDef, 3.97 ,5, 3 ] , 3.97 ,5,3]

 mMS2mRI[ ex1 , asMz/.NumDef , 5,1]
 mMS2mRI[ ex2 , asMz/.NumDef , 5,2]
 mMS2mRI[ ex3 , asMz/.NumDef , 5,3]

*)

(* ************************************************************ *)

(* example: "decoupling":

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,4]
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef,Mb/.NumDef,4,4]
 alsMc = AlphasExact[alsmuthp,Mb/.NumDef,Mc/.NumDef,4,4]
 
 AsRunDec[asMz/.NumDef,Mz/.NumDef,Mc/.NumDef,4]

 (* table *)

 (* \mu_th = M_b *)

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,1];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef,Mb/.NumDef,4,1];
 alsMc = AlphasExact[alsmuthp,Mb/.NumDef,Mc/.NumDef,4,1]

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,2];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef,Mb/.NumDef,4,2];
 alsMc = AlphasExact[alsmuthp,Mb/.NumDef,Mc/.NumDef,4,2]
 
 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,3];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef,Mb/.NumDef,4,3];
 alsMc = AlphasExact[alsmuthp,Mb/.NumDef,Mc/.NumDef,4,3]

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,4];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef,Mb/.NumDef,4,4];
 alsMc = AlphasExact[alsmuthp,Mb/.NumDef,Mc/.NumDef,4,4]
 
 (* \mu_th = 1 GeV *)

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef, 1 ,5,1];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef, 1 ,4,1];
 alsMc = AlphasExact[alsmuthp, 1 ,Mc/.NumDef,4,1]

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef, 1 ,5,2];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef, 1 ,4,2];
 alsMc = AlphasExact[alsmuthp, 1 ,Mc/.NumDef,4,2]

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef, 1 ,5,3];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef, 1 ,4,3];
 alsMc = AlphasExact[alsmuthp, 1 ,Mc/.NumDef,4,3]
 
 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef, 1 ,5,4];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef, 1 ,4,4];
 alsMc = AlphasExact[alsmuthp, 1 ,Mc/.NumDef,4,4]

 (* \mu_th = Mz GeV *)

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef, Mz/.NumDef ,5,1];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef, Mz/.NumDef ,4,1];
 alsMc = AlphasExact[alsmuthp, Mz/.NumDef ,Mc/.NumDef,4,1]

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef, Mz/.NumDef ,5,2];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef, Mz/.NumDef ,4,2];
 alsMc = AlphasExact[alsmuthp, Mz/.NumDef ,Mc/.NumDef,4,2]

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef, Mz/.NumDef ,5,3];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef, Mz/.NumDef ,4,3];
 alsMc = AlphasExact[alsmuthp, Mz/.NumDef ,Mc/.NumDef,4,3]

 alsmuth = AlphasExact[asMz/.NumDef,Mz/.NumDef, Mz/.NumDef ,5,4];
 alsmuthp = DecAsDownOS[alsmuth,Mb/.NumDef, Mz/.NumDef ,4,4];
 alsMc = AlphasExact[alsmuthp, Mz/.NumDef ,Mc/.NumDef,4,4]

*)

(* ************************************************************ *)

(* example: "decoupling": \mu_c -> m_c(M_Z)

 (* \mu_th = M_Z *)

 as1=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,Mz/.NumDef}},muc/.NumDef,1]
 mL2mH[muc/.NumDef,as1,muc/.NumDef,{{5,Mb/.NumDef,Mz/.NumDef}},Mz/.NumDef,1]
 as2=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,Mz/.NumDef}},muc/.NumDef,2]
 mL2mH[muc/.NumDef,as2,muc/.NumDef,{{5,Mb/.NumDef,Mz/.NumDef}},Mz/.NumDef,2]
 as3=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,Mz/.NumDef}},muc/.NumDef,3]
 mL2mH[muc/.NumDef,as3,muc/.NumDef,{{5,Mb/.NumDef,Mz/.NumDef}},Mz/.NumDef,3]
 as4=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,Mz/.NumDef}},muc/.NumDef,4]
 mL2mH[muc/.NumDef,as4,muc/.NumDef,{{5,Mb/.NumDef,Mz/.NumDef}},Mz/.NumDef,4]

 (* \mu_th = M_b *)

 as1=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,Mb/.NumDef}},muc/.NumDef,1]
 mL2mH[muc/.NumDef,as1,muc/.NumDef,{{5,Mb/.NumDef,Mb/.NumDef}},Mz/.NumDef,1]
 as2=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,Mb/.NumDef}},muc/.NumDef,2]
 mL2mH[muc/.NumDef,as2,muc/.NumDef,{{5,Mb/.NumDef,Mb/.NumDef}},Mz/.NumDef,2]
 as3=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,Mb/.NumDef}},muc/.NumDef,3]
 mL2mH[muc/.NumDef,as3,muc/.NumDef,{{5,Mb/.NumDef,Mb/.NumDef}},Mz/.NumDef,3]
 as4=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,Mb/.NumDef}},muc/.NumDef,4]
 mL2mH[muc/.NumDef,as4,muc/.NumDef,{{5,Mb/.NumDef,Mb/.NumDef}},Mz/.NumDef,4]

 (* \mu_th = 1 GeV *)

 as1=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,1}},muc/.NumDef,1]
 mL2mH[muc/.NumDef,as1,muc/.NumDef,{{5,Mb/.NumDef,1}},Mz/.NumDef,1]
 as2=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,1}},muc/.NumDef,2]
 mL2mH[muc/.NumDef,as2,muc/.NumDef,{{5,Mb/.NumDef,1}},Mz/.NumDef,2]
 as3=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,1}},muc/.NumDef,3]
 mL2mH[muc/.NumDef,as3,muc/.NumDef,{{5,Mb/.NumDef,1}},Mz/.NumDef,3]
 as4=AlH2AlL[asMz/.NumDef,Mz/.NumDef,{{5,Mb/.NumDef,1}},muc/.NumDef,4]
 mL2mH[muc/.NumDef,as4,muc/.NumDef,{{5,Mb/.NumDef,1}},Mz/.NumDef,4]


 (*
  Alternative method: here \alpha_s^(5)(M_Z) serves as input for the
  computation of \alpha_s at other scales.
  *)

 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, Mz/.NumDef ,Mz/.NumDef,1]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, Mz/.NumDef ,Mz/.NumDef,2]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, Mz/.NumDef ,Mz/.NumDef,3]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, Mz/.NumDef ,Mz/.NumDef,4]

 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, Mb/.NumDef ,Mz/.NumDef,1]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, Mb/.NumDef ,Mz/.NumDef,2]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, Mb/.NumDef ,Mz/.NumDef,3]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, Mb/.NumDef ,Mz/.NumDef,4]

 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, 1 ,Mz/.NumDef,1]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, 1 ,Mz/.NumDef,2]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, 1 ,Mz/.NumDef,3]
 Mc5Mzfrommuc4[asMz/.NumDef,muc/.NumDef,Mb/.NumDef, 1 ,Mz/.NumDef,4]

*)

(* ************************************************************ *)

(* examples in the descriptions of the procedures

 AsRunDec[asMz/.NumDef,Mz/.NumDef,500,4]
 mOS2mMS[175,6,3]
 mMS2mOS[165,6,3]

 LamExpl[asMz/.NumDef,Mz/.NumDef,5,3]
 LamImpl[asMz/.NumDef,Mz/.NumDef,5,3]
 AlphasLam[0.208,4.7,5,3]
 AlphasExact[asMz/.NumDef,Mz/.NumDef,Mb/.NumDef,5,3]

 mOS2mMS[175,{},0.107,175,6,3]
 mMS2mOS[165,{},0.107,175,6,3]
 mOS2mMSrun[175,{},0.107,175,6,3]
 mMS2mOSrun[165,{},0.107,175,6,3]
 mOS2mMSit[175,{},0.107,175,6,3]
 mOS2mSI[Mb/.NumDef,{1.6},0.217,5,3]
 mMS2mMS[3.85,0.217,asMz/.NumDef,5,4]
 mMS2mSI[3.85,0.217,4.7,5,4]
 mMS2mRI[ 2.695 , asMz/.NumDef ,5,3]
 mRI2mMS[175,0.107,6,3]
 mMS2mRGI[2.69,asMz/.NumDef,5,4]
 mRGI2mMS[14.25,asMz/.NumDef,5,4]

 DecAsUpOS[asMz/.NumDef,175,Mz/.NumDef,5,4]
 DecAsDownOS[0.105,175,200,6,4]
 DecAsUpMS[asMz/.NumDef,165,Mz/.NumDef,5,4]
 DecAsDownMS[0.105,165,200,5,4]
 DecAsUpSI[asMz/.NumDef,167,Mz/.NumDef,5,4]
 DecAsDownSI[0.105,167,200,5,4]

 DecMqUpOS[2.7,asMz/.NumDef,175,Mz/.NumDef,5,4]
 DecMqDownOS[0.58,asMz/.NumDef,4.7,Mz/.NumDef,5,4]
 DecMqUpMS[10,0.2,200,500,5,4]
 DecMqDownMS[9.9857,0.2,200,500,5,4]
 DecMqUpSI[10,0.2,200,500,5,4]
 DecMqDownSI[9.9857,0.2,200,500,5,4]

 DecLambdaDown[0.208, 3.97, 4, 4 ]
 DecLambdaUp[  0.287 , 3.97 , 4, 4 ]

 (*
  In the following example DecLambdaUp[] is compared with the 
  "explicit" method
  *)
 (l=3;mut=165;
 lam5=LamImpl[asMz/.NumDef,Mz/.NumDef,5,l];
 res1=DecLambdaUp[lam5, mut, 5, l ];
 asmut=AlphasExact[asMz/.NumDef,Mz/.NumDef,mut,5,l];
 asmut2=DecAsUpSI[ asmut ,mut,mut,5,l];
 res2=LamImpl[asmut2,mut,6,l];
 Print[{res1,res2}];)

 AlL2AlH[0.338,1.6,{{6,175,200},{5,4.7,5}},500,4]
 AlH2AlL[0.0952,500,{{6,175,200},{5,4.7,5}},1.6,4]
 mL2mH[1.2,0.403,1.2,{{5,4.7,5.0}},Mz/.NumDef,4]
 mH2mL[0.580,asMz/.NumDef,Mz/.NumDef,{{5,4.7,5.0}},1.2,4]
*)

