@ Override public INDArray exec ( RandomOp op , Random rng ) { if ( ! ( rng instanceof CpuNativeRandom ) ) throw new IllegalStateException ( "You should use one of NativeRandom classes for NativeOperations execution. Op class: " + op . getClass ( ) . getName ( ) ) ; long st = profilingConfigurableHookIn ( op ) ; //validateDataType(Nd4j.dataType(), op); Preconditions . checkArgument ( op . z ( ) . isR ( ) , "Op.Z must have one of floating point types" ) ; if ( op . x ( ) != null && op . y ( ) != null && op . z ( ) != null ) { // triple arg call loop . execRandom ( null , op . opNum ( ) , rng . getStatePointer ( ) , // rng state ptr op . x ( ) . data ( ) . addressPointer ( ) , ( LongPointer ) op . x ( ) . shapeInfoDataBuffer ( ) . addressPointer ( ) , null , null , op . y ( ) . data ( ) . addressPointer ( ) , ( LongPointer ) op . y ( ) . shapeInfoDataBuffer ( ) . addressPointer ( ) , null , null , op . z ( ) . data ( ) . addressPointer ( ) , ( LongPointer ) op . z ( ) . shapeInfoDataBuffer ( ) . addressPointer ( ) , null , null , op . extraArgsDataBuff ( op . z ( ) . dataType ( ) ) . addressPointer ( ) ) ; } else if ( op . x ( ) != null && op . z ( ) != null ) { //double arg call loop . execRandom ( null , op . opNum ( ) , rng . getStatePointer ( ) , // rng state ptr op . x ( ) . data ( ) . addressPointer ( ) , ( LongPointer ) op . x ( ) . shapeInfoDataBuffer ( ) . addressPointer ( ) , null , null , op . z ( ) . data ( ) . addressPointer ( ) , ( LongPointer ) op . z ( ) . shapeInfoDataBuffer ( ) . addressPointer ( ) , null , null , op . extraArgsDataBuff ( op . z ( ) . dataType ( ) ) . addressPointer ( ) ) ; } else { // single arg call loop . execRandom ( null , op . opNum ( ) , rng . getStatePointer ( ) , // rng state ptr op . z ( ) . data ( ) . addressPointer ( ) , ( LongPointer ) op . z ( ) . shapeInfoDataBuffer ( ) . addressPointer ( ) , null , null , op . extraArgsDataBuff ( op . z ( ) . dataType ( ) ) . addressPointer ( ) ) ; } profilingConfigurableHookOut ( op , st ) ; return op . z ( ) ; }
This method executes specific RandomOp against specified RNG