1234567891011121314151617181920212223242526272829303132333435363738394041424344(*
* Copyright 2025 Elias GAUTHIER <elias.gauthier@etu.u-bordeaux.fr>
*
* 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.
*)openComplextypeq={mutablealpha:complex;mutablebeta:complex}letzero()={alpha=Complex.one;beta=Complex.zero}letone()={alpha=Complex.zero;beta=Complex.one}letplus()={alpha={re=1.0/.sqrt2.0;im=0.0};beta={re=1.0/.sqrt2.0;im=0.0};}letminus()={alpha={re=1.0/.sqrt2.0;im=0.0};beta={re=-.1.0/.sqrt2.0;im=0.0};}letget_alphaq=q.alphaletget_betaq=q.betaletprint()q=Printf.sprintf"|ψ⟩ = (%.2f + %.2fi)|0⟩ + (%.2f + %.2fi)|1⟩"q.alpha.req.alpha.imq.beta.req.beta.im