public class org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction implements org.apache.commons.math3.ml.neuralnet.UpdateAction
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction
  super_class: java.lang.Object
{
  private final org.apache.commons.math3.ml.distance.DistanceMeasure distance;
    descriptor: Lorg/apache/commons/math3/ml/distance/DistanceMeasure;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.commons.math3.ml.neuralnet.sofm.LearningFactorFunction learningFactor;
    descriptor: Lorg/apache/commons/math3/ml/neuralnet/sofm/LearningFactorFunction;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.commons.math3.ml.neuralnet.sofm.NeighbourhoodSizeFunction neighbourhoodSize;
    descriptor: Lorg/apache/commons/math3/ml/neuralnet/sofm/NeighbourhoodSizeFunction;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.atomic.AtomicLong numberOfCalls;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(org.apache.commons.math3.ml.distance.DistanceMeasure, org.apache.commons.math3.ml.neuralnet.sofm.LearningFactorFunction, org.apache.commons.math3.ml.neuralnet.sofm.NeighbourhoodSizeFunction);
    descriptor: (Lorg/apache/commons/math3/ml/distance/DistanceMeasure;Lorg/apache/commons/math3/ml/neuralnet/sofm/LearningFactorFunction;Lorg/apache/commons/math3/ml/neuralnet/sofm/NeighbourhoodSizeFunction;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
        start local 1 // org.apache.commons.math3.ml.distance.DistanceMeasure distance
        start local 2 // org.apache.commons.math3.ml.neuralnet.sofm.LearningFactorFunction learningFactor
        start local 3 // org.apache.commons.math3.ml.neuralnet.sofm.NeighbourhoodSizeFunction neighbourhoodSize
         0: .line 84
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 77
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            lconst_0
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.numberOfCalls:Ljava/util/concurrent/atomic/AtomicLong;
         2: .line 87
            aload 0 /* this */
            aload 1 /* distance */
            putfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.distance:Lorg/apache/commons/math3/ml/distance/DistanceMeasure;
         3: .line 88
            aload 0 /* this */
            aload 2 /* learningFactor */
            putfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.learningFactor:Lorg/apache/commons/math3/ml/neuralnet/sofm/LearningFactorFunction;
         4: .line 89
            aload 0 /* this */
            aload 3 /* neighbourhoodSize */
            putfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.neighbourhoodSize:Lorg/apache/commons/math3/ml/neuralnet/sofm/NeighbourhoodSizeFunction;
         5: .line 90
            return
        end local 3 // org.apache.commons.math3.ml.neuralnet.sofm.NeighbourhoodSizeFunction neighbourhoodSize
        end local 2 // org.apache.commons.math3.ml.neuralnet.sofm.LearningFactorFunction learningFactor
        end local 1 // org.apache.commons.math3.ml.distance.DistanceMeasure distance
        end local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    6     0               this  Lorg/apache/commons/math3/ml/neuralnet/sofm/KohonenUpdateAction;
            0    6     1           distance  Lorg/apache/commons/math3/ml/distance/DistanceMeasure;
            0    6     2     learningFactor  Lorg/apache/commons/math3/ml/neuralnet/sofm/LearningFactorFunction;
            0    6     3  neighbourhoodSize  Lorg/apache/commons/math3/ml/neuralnet/sofm/NeighbourhoodSizeFunction;
    MethodParameters:
                   Name  Flags
      distance           
      learningFactor     
      neighbourhoodSize  

  public void update(org.apache.commons.math3.ml.neuralnet.Network, double[]);
    descriptor: (Lorg/apache/commons/math3/ml/neuralnet/Network;[D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=15, args_size=3
        start local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
        start local 1 // org.apache.commons.math3.ml.neuralnet.Network net
        start local 2 // double[] features
         0: .line 97
            aload 0 /* this */
            getfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.numberOfCalls:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            lconst_1
            lsub
            lstore 3 /* numCalls */
        start local 3 // long numCalls
         1: .line 98
            aload 0 /* this */
            getfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.learningFactor:Lorg/apache/commons/math3/ml/neuralnet/sofm/LearningFactorFunction;
            lload 3 /* numCalls */
            invokeinterface org.apache.commons.math3.ml.neuralnet.sofm.LearningFactorFunction.value:(J)D
            dstore 5 /* currentLearning */
        start local 5 // double currentLearning
         2: .line 99
            aload 0 /* this */
            aload 1 /* net */
         3: .line 100
            aload 2 /* features */
         4: .line 101
            dload 5 /* currentLearning */
         5: .line 99
            invokevirtual org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.findAndUpdateBestNeuron:(Lorg/apache/commons/math3/ml/neuralnet/Network;[DD)Lorg/apache/commons/math3/ml/neuralnet/Neuron;
            astore 7 /* best */
        start local 7 // org.apache.commons.math3.ml.neuralnet.Neuron best
         6: .line 103
            aload 0 /* this */
            getfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.neighbourhoodSize:Lorg/apache/commons/math3/ml/neuralnet/sofm/NeighbourhoodSizeFunction;
            lload 3 /* numCalls */
            invokeinterface org.apache.commons.math3.ml.neuralnet.sofm.NeighbourhoodSizeFunction.value:(J)I
            istore 8 /* currentNeighbourhood */
        start local 8 // int currentNeighbourhood
         7: .line 107
            new org.apache.commons.math3.analysis.function.Gaussian
            dup
            dload 5 /* currentLearning */
         8: .line 108
            dconst_0
         9: .line 109
            iload 8 /* currentNeighbourhood */
            i2d
        10: .line 107
            invokespecial org.apache.commons.math3.analysis.function.Gaussian.<init>:(DDD)V
        11: .line 106
            astore 9 /* neighbourhoodDecay */
        start local 9 // org.apache.commons.math3.analysis.function.Gaussian neighbourhoodDecay
        12: .line 111
            iload 8 /* currentNeighbourhood */
            ifle 27
        13: .line 113
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 10 /* neighbours */
        start local 10 // java.util.Collection neighbours
        14: .line 114
            aload 10 /* neighbours */
            aload 7 /* best */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        15: .line 116
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 11 /* exclude */
        start local 11 // java.util.HashSet exclude
        16: .line 117
            aload 11 /* exclude */
            aload 7 /* best */
            invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
            pop
        17: .line 119
            iconst_1
            istore 12 /* radius */
        start local 12 // int radius
        18: .line 122
      StackMap locals: org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction org.apache.commons.math3.ml.neuralnet.Network double[] long double org.apache.commons.math3.ml.neuralnet.Neuron int org.apache.commons.math3.analysis.function.Gaussian java.util.Collection java.util.HashSet int
      StackMap stack:
            aload 1 /* net */
            aload 10 /* neighbours */
            aload 11 /* exclude */
            invokevirtual org.apache.commons.math3.ml.neuralnet.Network.getNeighbours:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/Collection;
            astore 10 /* neighbours */
        19: .line 125
            aload 10 /* neighbours */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 14
            goto 22
      StackMap locals: org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction org.apache.commons.math3.ml.neuralnet.Network double[] long double org.apache.commons.math3.ml.neuralnet.Neuron int org.apache.commons.math3.analysis.function.Gaussian java.util.Collection java.util.HashSet int top java.util.Iterator
      StackMap stack:
        20: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.commons.math3.ml.neuralnet.Neuron
            astore 13 /* n */
        start local 13 // org.apache.commons.math3.ml.neuralnet.Neuron n
        21: .line 126
            aload 0 /* this */
            aload 13 /* n */
            aload 2 /* features */
            aload 9 /* neighbourhoodDecay */
            iload 12 /* radius */
            i2d
            invokevirtual org.apache.commons.math3.analysis.function.Gaussian.value:(D)D
            invokevirtual org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.updateNeighbouringNeuron:(Lorg/apache/commons/math3/ml/neuralnet/Neuron;[DD)V
        end local 13 // org.apache.commons.math3.ml.neuralnet.Neuron n
        22: .line 125
      StackMap locals:
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        23: .line 131
            aload 11 /* exclude */
            aload 10 /* neighbours */
            invokevirtual java.util.HashSet.addAll:(Ljava/util/Collection;)Z
            pop
        24: .line 132
            iinc 12 /* radius */ 1
        25: .line 133
            iload 12 /* radius */
            iload 8 /* currentNeighbourhood */
        26: .line 120
            if_icmple 18
        end local 12 // int radius
        end local 11 // java.util.HashSet exclude
        end local 10 // java.util.Collection neighbours
        27: .line 135
      StackMap locals: org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction org.apache.commons.math3.ml.neuralnet.Network double[] long double org.apache.commons.math3.ml.neuralnet.Neuron int org.apache.commons.math3.analysis.function.Gaussian
      StackMap stack:
            return
        end local 9 // org.apache.commons.math3.analysis.function.Gaussian neighbourhoodDecay
        end local 8 // int currentNeighbourhood
        end local 7 // org.apache.commons.math3.ml.neuralnet.Neuron best
        end local 5 // double currentLearning
        end local 3 // long numCalls
        end local 2 // double[] features
        end local 1 // org.apache.commons.math3.ml.neuralnet.Network net
        end local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   28     0                  this  Lorg/apache/commons/math3/ml/neuralnet/sofm/KohonenUpdateAction;
            0   28     1                   net  Lorg/apache/commons/math3/ml/neuralnet/Network;
            0   28     2              features  [D
            1   28     3              numCalls  J
            2   28     5       currentLearning  D
            6   28     7                  best  Lorg/apache/commons/math3/ml/neuralnet/Neuron;
            7   28     8  currentNeighbourhood  I
           12   28     9    neighbourhoodDecay  Lorg/apache/commons/math3/analysis/function/Gaussian;
           14   27    10            neighbours  Ljava/util/Collection<Lorg/apache/commons/math3/ml/neuralnet/Neuron;>;
           16   27    11               exclude  Ljava/util/HashSet<Lorg/apache/commons/math3/ml/neuralnet/Neuron;>;
           18   27    12                radius  I
           21   22    13                     n  Lorg/apache/commons/math3/ml/neuralnet/Neuron;
    MethodParameters:
          Name  Flags
      net       
      features  

  public long getNumberOfCalls();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
         0: .line 144
            aload 0 /* this */
            getfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.numberOfCalls:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lreturn
        end local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/math3/ml/neuralnet/sofm/KohonenUpdateAction;

  private boolean attemptNeuronUpdate(org.apache.commons.math3.ml.neuralnet.Neuron, double[], double);
    descriptor: (Lorg/apache/commons/math3/ml/neuralnet/Neuron;[DD)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
        start local 1 // org.apache.commons.math3.ml.neuralnet.Neuron n
        start local 2 // double[] features
        start local 3 // double learningRate
         0: .line 159
            aload 1 /* n */
            invokevirtual org.apache.commons.math3.ml.neuralnet.Neuron.getFeatures:()[D
            astore 5 /* expect */
        start local 5 // double[] expect
         1: .line 160
            aload 0 /* this */
            aload 5 /* expect */
         2: .line 161
            aload 2 /* features */
         3: .line 162
            dload 3 /* learningRate */
         4: .line 160
            invokevirtual org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.computeFeatures:([D[DD)[D
            astore 6 /* update */
        start local 6 // double[] update
         5: .line 164
            aload 1 /* n */
            aload 5 /* expect */
            aload 6 /* update */
            invokevirtual org.apache.commons.math3.ml.neuralnet.Neuron.compareAndSetFeatures:([D[D)Z
            ireturn
        end local 6 // double[] update
        end local 5 // double[] expect
        end local 3 // double learningRate
        end local 2 // double[] features
        end local 1 // org.apache.commons.math3.ml.neuralnet.Neuron n
        end local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/apache/commons/math3/ml/neuralnet/sofm/KohonenUpdateAction;
            0    6     1             n  Lorg/apache/commons/math3/ml/neuralnet/Neuron;
            0    6     2      features  [D
            0    6     3  learningRate  D
            1    6     5        expect  [D
            5    6     6        update  [D
    MethodParameters:
              Name  Flags
      n             
      features      
      learningRate  

  private void updateNeighbouringNeuron(org.apache.commons.math3.ml.neuralnet.Neuron, double[], double);
    descriptor: (Lorg/apache/commons/math3/ml/neuralnet/Neuron;[DD)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
        start local 1 // org.apache.commons.math3.ml.neuralnet.Neuron n
        start local 2 // double[] features
        start local 3 // double learningRate
         0: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* n */
            aload 2 /* features */
            dload 3 /* learningRate */
            invokevirtual org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.attemptNeuronUpdate:(Lorg/apache/commons/math3/ml/neuralnet/Neuron;[DD)Z
            ifeq 0
         1: .line 182
            return
        end local 3 // double learningRate
        end local 2 // double[] features
        end local 1 // org.apache.commons.math3.ml.neuralnet.Neuron n
        end local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/apache/commons/math3/ml/neuralnet/sofm/KohonenUpdateAction;
            0    2     1             n  Lorg/apache/commons/math3/ml/neuralnet/Neuron;
            0    2     2      features  [D
            0    2     3  learningRate  D
    MethodParameters:
              Name  Flags
      n             
      features      
      learningRate  

  private org.apache.commons.math3.ml.neuralnet.Neuron findAndUpdateBestNeuron(org.apache.commons.math3.ml.neuralnet.Network, double[], double);
    descriptor: (Lorg/apache/commons/math3/ml/neuralnet/Network;[DD)Lorg/apache/commons/math3/ml/neuralnet/Neuron;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
        start local 1 // org.apache.commons.math3.ml.neuralnet.Network net
        start local 2 // double[] features
        start local 3 // double learningRate
         0: .line 197
      StackMap locals:
      StackMap stack:
            aload 2 /* features */
            aload 1 /* net */
            aload 0 /* this */
            getfield org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.distance:Lorg/apache/commons/math3/ml/distance/DistanceMeasure;
            invokestatic org.apache.commons.math3.ml.neuralnet.MapUtils.findBest:([DLjava/lang/Iterable;Lorg/apache/commons/math3/ml/distance/DistanceMeasure;)Lorg/apache/commons/math3/ml/neuralnet/Neuron;
            astore 5 /* best */
        start local 5 // org.apache.commons.math3.ml.neuralnet.Neuron best
         1: .line 199
            aload 0 /* this */
            aload 5 /* best */
            aload 2 /* features */
            dload 3 /* learningRate */
            invokevirtual org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction.attemptNeuronUpdate:(Lorg/apache/commons/math3/ml/neuralnet/Neuron;[DD)Z
            ifeq 0
         2: .line 200
            aload 5 /* best */
            areturn
        end local 5 // org.apache.commons.math3.ml.neuralnet.Neuron best
        end local 3 // double learningRate
        end local 2 // double[] features
        end local 1 // org.apache.commons.math3.ml.neuralnet.Network net
        end local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/apache/commons/math3/ml/neuralnet/sofm/KohonenUpdateAction;
            0    3     1           net  Lorg/apache/commons/math3/ml/neuralnet/Network;
            0    3     2      features  [D
            0    3     3  learningRate  D
            1    3     5          best  Lorg/apache/commons/math3/ml/neuralnet/Neuron;
    MethodParameters:
              Name  Flags
      net           
      features      
      learningRate  

  private double[] computeFeatures(double[], double[], double);
    descriptor: ([D[DD)[D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
        start local 1 // double[] current
        start local 2 // double[] sample
        start local 3 // double learningRate
         0: .line 220
            new org.apache.commons.math3.linear.ArrayRealVector
            dup
            aload 1 /* current */
            iconst_0
            invokespecial org.apache.commons.math3.linear.ArrayRealVector.<init>:([DZ)V
            astore 5 /* c */
        start local 5 // org.apache.commons.math3.linear.ArrayRealVector c
         1: .line 221
            new org.apache.commons.math3.linear.ArrayRealVector
            dup
            aload 2 /* sample */
            iconst_0
            invokespecial org.apache.commons.math3.linear.ArrayRealVector.<init>:([DZ)V
            astore 6 /* s */
        start local 6 // org.apache.commons.math3.linear.ArrayRealVector s
         2: .line 223
            aload 6 /* s */
            aload 5 /* c */
            invokevirtual org.apache.commons.math3.linear.ArrayRealVector.subtract:(Lorg/apache/commons/math3/linear/RealVector;)Lorg/apache/commons/math3/linear/ArrayRealVector;
            dload 3 /* learningRate */
            invokevirtual org.apache.commons.math3.linear.ArrayRealVector.mapMultiplyToSelf:(D)Lorg/apache/commons/math3/linear/RealVector;
            aload 5 /* c */
            invokevirtual org.apache.commons.math3.linear.RealVector.add:(Lorg/apache/commons/math3/linear/RealVector;)Lorg/apache/commons/math3/linear/RealVector;
            invokevirtual org.apache.commons.math3.linear.RealVector.toArray:()[D
            areturn
        end local 6 // org.apache.commons.math3.linear.ArrayRealVector s
        end local 5 // org.apache.commons.math3.linear.ArrayRealVector c
        end local 3 // double learningRate
        end local 2 // double[] sample
        end local 1 // double[] current
        end local 0 // org.apache.commons.math3.ml.neuralnet.sofm.KohonenUpdateAction this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/apache/commons/math3/ml/neuralnet/sofm/KohonenUpdateAction;
            0    3     1       current  [D
            0    3     2        sample  [D
            0    3     3  learningRate  D
            1    3     5             c  Lorg/apache/commons/math3/linear/ArrayRealVector;
            2    3     6             s  Lorg/apache/commons/math3/linear/ArrayRealVector;
    MethodParameters:
              Name  Flags
      current       
      sample        
      learningRate  
}
SourceFile: "KohonenUpdateAction.java"