text: /**
   * @license
   * Copyright 2020 Google Inc. All Rights Reserved.
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   * =============================================================================
   */
  import { ENGINE } from '../engine';
  import { Pow } from '../kernel_names';
  import { makeTypesMatch } from '../tensor_util';
  import { convertToTensor } from '../tensor_util_env';
  import { op } from './operation';
  /**
   * Computes the power of one `tf.Tensor` to another. Supports broadcasting.
   *
   * Given a `tf.Tensor` x and a `tf.Tensor` y, this operation computes x^y for
   * corresponding elements in x and y. The result's dtype will be the upcasted
   * type of the `base` and `exp` dtypes.
   *
   * ```js
   * const a = tf.tensor([[2, 3], [4, 5]])
   * const b = tf.tensor([[1, 2], [3, 0]]).toInt();
   *
   * a.pow(b).print();  // or tf.pow(a, b)
   * ```
   *
   * ```js
   * const a = tf.tensor([[1, 2], [3, 4]])
   * const b = tf.tensor(2).toInt();
   *
   * a.pow(b).print();  // or tf.pow(a, b)
   * ```
   * We also expose `powStrict` which has the same signature as this op and
   * asserts that `base` and `exp` are the same shape (does not broadcast).
   *
   * @param base The base `tf.Tensor` to pow element-wise.
   * @param exp The exponent `tf.Tensor` to pow element-wise.
   */
  /** @doc {heading: 'Operations', subheading: 'Arithmetic'} */
  function pow_(base, exp) {
      let $base = convertToTensor(base, 'base', 'pow');
      let $exp = convertToTensor(exp, 'exp', 'pow');
      [$base, $exp] = makeTypesMatch($base, $exp);
      const inputs = { a: $base, b: $exp };
      const forward = (backend, save) => {
          const y = backend.pow($base, $exp);
          save([$base, $exp, y]);
          return y;
      };
      return ENGINE.runKernelFunc(forward, inputs, null /* gradient */, Pow);
  }
  export const pow = op({ pow_ });
  //# sourceMappingURL=pow.js.map