license import { buffer , DataType , Rank , TensorBuffer } from '@tensorflow/tfjs-core' ; /**
 * An implementation of the tile kernel shared between webgl and cpu for string
 * tensors only.
 */ export function tileImpl < R extends Rank > ( xBuf , reps ) { const newShape = new Array ( xBuf . rank ) ; for ( let i = 0 ; i < newShape . length ; i ++ ) { newShape [ i ] = xBuf . shape [ i ] * reps [ i ] ; } const result = buffer ( newShape , xBuf . dtype ) ; for ( let i = 0 ; i < result . values . length ; ++ i ) { const newLoc = result . indexToLoc ( i ) ; const originalLoc = new Array ( xBuf . rank ) ; for ( let j = 0 ; j < originalLoc . length ; j ++ ) { originalLoc [ j ] = newLoc [ j ] % xBuf . shape [ j ] ; } const originalIndex = xBuf . locToIndex ( originalLoc ) ; result . values [ i ] = xBuf . values [ originalIndex ] ; } return result as TensorBuffer < R , DataType > ; }