anchor.diff:  let outputSize = 13;
   
   let network = {
  - N = 0.001
  - M = 0.9
  + LearningRate = 0.001
  + Momentum = 0.9
    Inputs = List.replicate inputSize 0.0
  - InputToHiddenWeights = List.chunkBySize inputSize (listRandElems ((*) inputSize hiddenSize))
  - HiddenBias = listRandElems hiddenSize
  - HiddenToOutputWeights = List.chunkBySize hiddenSize (listRandElems ((*) hiddenSize outputSize))
  - HiddenNetOutputs = List.empty
  - HiddenPrevDeltas = List.replicate hiddenSize (List.replicate inputSize 0.0)
  - HiddenBiasPrevDeltas = List.replicate hiddenSize 0.0
  - OutputBias = listRandElems outputSize
  - OutputPrevDeltas = List.replicate outputSize (List.replicate hiddenSize 0.0)
  - OutputBiasPrevDeltas = List.replicate outputSize 0.0
  - Outputs = List.empty
  + HiddenLayer = {
  +                Inputs = List.empty
  +                Weights = ((*) inputSize hiddenSize) |> listRandElems |> List.chunkBySize inputSize
  +                Bias = listRandElems hiddenSize
  +                PrevDeltas = List.replicate hiddenSize <| List.replicate inputSize 0.0
  +                BiasPrevDeltas = List.replicate hiddenSize 0.0
  +                NetOutputs = List.empty
  + }
  + OutputLayer = {
  +                Inputs = List.empty
  +                Weights = ((*) hiddenSize outputSize) |> listRandElems |> List.chunkBySize hiddenSize
  +                Bias = listRandElems outputSize
  +                PrevDeltas = List.replicate outputSize <| List.replicate hiddenSize 0.0
  +                BiasPrevDeltas = List.replicate outputSize 0.0
  +                NetOutputs = List.empty
  + }
    TargetOutputs = List.replicate outputSize 0.0
   }
   
  -let training_samples = [| [ 0.500; 0.000; 0.000; 0.000; 0.000; 0.000; 0.000;  ] |]
  -let teaching_inputs = [| [ 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 1.0; 0.0; 0.0; 1.0; 0.0;  ] |]
  -let testing_samples = [| [ 0.692; 0.000; 0.000; 0.174; 0.000; 0.000; 0.000; ] |]
  -let teaching_samples_inputs = [| [ 1.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 1.0; 0.0; 0.0;  ] |]
  +let training_samples = [|
  + [ 0.500; 0.000; 0.000; 0.000; 0.000; 0.000; 0.000;  ]
  + [ 0.500; 0.000; 0.000; 0.000; 0.000; 0.000; 0.000;  ]
  + |]
  +let teaching_inputs = [|
  + [ 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 1.0; 0.0; 0.0; 1.0; 0.0;  ]
  + [ 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 1.0; 0.0; 0.0; 1.0; 0.0;  ]
  + |]
  +let testing_samples = [|
  + [ 0.692; 0.000; 0.000; 0.174; 0.000; 0.000; 0.000; ]
  + [ 0.692; 0.000; 0.000; 0.174; 0.000; 0.000; 0.000; ]
  + |]
  +let teaching_samples_inputs = [|
  + [ 1.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 1.0; 0.0; 0.0;  ]
  + [ 1.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; 1.0; 0.0; 0.0;  ]
  + |]
   
   let epoch = 20
   
  
positive.code: let add xs ys = List.map2 (+) xs ys
  
  /// Logistic Sigmoid.
  let logSigmoid x        = (/) 1.0 ((+) 1.0 (exp -x))
  
  /// Derivative of Logistic Sigmoid.
  let deltaLogSigmoid x    = (*) x ((-) 1.0 x)
  
  /// Derivative of TanH i.e. sec^2h.
  let deltaTanH x = (/) 1.0 <| (*) (cosh x) (cosh x)
  
negative.code:  train
    epoch network
    ((Array.toList training_samples), (Array.toList teaching_inputs))
    ((Array.toList testing_samples), (Array.toList teaching_samples_inputs))