/// <summary>実数から四元数を構成</summary>
        public static Tensor QuaternionCast(Tensor real, Tensor imag_i, Tensor imag_j, Tensor imag_k)
        {
            Function function = new Functions.Quaternion.QuaternionCast();

            Shape y_shape = function.OutputShapes(real.Shape)[0];

            Tensor y = new Tensor(y_shape);

            function.Execute(new Tensor[] { real, imag_i, imag_j, imag_k }, new Tensor[] { y });

            return(y);
        }
        /// <summary>実数から四元数を構成</summary>
        public static VariableNode QuaternionCast(VariableNode real, VariableNode imag_i, VariableNode imag_j, VariableNode imag_k)
        {
            Function function = new Functions.Quaternion.QuaternionCast();

            return(Apply(function, real, imag_i, imag_j, imag_k)[0]);
        }