Repository: Classiq/classiq-library
Pull request #908: Paper Implementation Challenge #792
Author: login: zzz845zz
Labels: name: Paper Implementation Project
description: Implement a paper using Classiq
Created: 2025-04-01T13:49:23Z | Merged: 2025-05-22T12:01:43Z

### PR Description

Related to https://github.com/Classiq/classiq-library/issues/792

This PR provides working implementations of the state preparation algorithm proposed in the paper, with a particular focus on Gaussian state preparation. Each notebook varies parameters resolution and exp_rate. For example:
- `resolution=6`, `exp_rate=1`: stateprep_gaussian_n6_rate1.ipynb
- `resolution=7`, `exp_rate=2`: stateprep_gaussian_n7_rate2.ipynb


Diff:
diff --git a/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb b/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
new file mode 100644
index 000000000..22df892aa
--- /dev/null
+++ b/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
@@ -0,0 +1,876 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Quantum state preparation without coherent arithmetic"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "This notebook implements a quantum state preparation circuit based on _Quantum State Preparation Without Coherent Arithmetic_ ([arXiv:2210.14892](https://arxiv.org/pdf/2210.14892)), as part of “Implementation Challenge” by Classiq. \n",
+    " Specifically, we will construct a Gaussian state preparation circuit from [Classiq’s MIT iQuHack 2025 challenge](https://github.com/iQuHACK/2025-Classiq/blob/main/classiq_iQuHack_2025_final.ipynb) using the approach outlined in this paper.\n",
+    "\n",
+    "$$|{x_0}\\rangle_N = |0\\rangle_N \\rightarrow \\sum_x {G(x)} |{x}\\rangle_N$$\n",
+    "\n",
+    "## Algorithm Overview\n",
+    "\n",
+    "The algorithm leverages Quantum Eigenvalue Transformation (QET) technique to encode a function into a quantum state. \n",
+    "The key idea is to approximate the desired function using polynomial approximations and implement these polynomials as quantum circuits.\n",
+    "\n",
+    "#### General workflow\n",
+    "- The algorithm starts by defining a function $f(x)$ (in this case, a Gaussian function) to be encoded into the quantum state.\n",
+    "- It constructs a block-encoding circuit ($U_{\\text{sin}}$) that initializes the input state.\n",
+    "- Using QET, the function $f(x)$ is applied to the input state via a circuit ($U_f$) that encodes the polynomial approximation of $f(x)$.\n",
+    "- Finally, amplitude amplification ($U_{\\text{amp}}$) is applied to increase the probability of measuring the desired state.\n",
+    "\n",
+    "#### Benefits\n",
+    "- Scalability: The algorithm avoids the need for coherent arithmetic, making it more efficient for amplitude encoding. It requires only a fixed number of ancillary qubits (at most 4) regardless of the function's complexity.\n",
+    "- Flexibility: It supports encoding various functions, such as polynomial or Fourier series approximations, and is applicable to a wide range of continuous functions.\n",
+    "- Resource Efficiency: By leveraging QET, the algorithm minimizes the number of non-Clifford gates and logical qubits while avoiding the use of amplitude oracles.\n",
+    "\n",
+    "#### Complexity\n",
+    "- The complexity of the algorithm depends on the degree of the polynomial approximation used for `f(x)`. Higher-degree polynomials provide better approximations but require more quantum gates.\n",
+    "- Specifically, the non-Clifford gate complexity of the QET-based approach is approximately:\n",
+    "            $$ O\\left(\\frac{n \\cdot d}{F}\\right), $$\n",
+    "where:\n",
+    "    - $n$: Number of qubits representing the input state.\n",
+    "    - $d$: Degree of the polynomial approximation.\n",
+    "    - $F$: L2-norm filling-fraction of the polynomial approximation.\n",
+    "\n",
+    "This complexity indicates that the number of non-Clifford gates scales linearly with the number of qubits $n$ and the polynomial degree $d$.\n",
+    "For detailed analysis, please refer to the paper.\n",
+    "\n",
+    "## Implementation\n",
+    "\n",
+    "To implement amplitude encoding without coherent arithmetic, we construct the following three components, as described in Figure 1 of the paper:\n",
+    "- $U_{\\text{sin}}$: Block encoding of the initial values.\n",
+    "- $U_f$: Function application via Quantum Eigenvalue Transformation (QET).\n",
+    "- $U_{\\text{amp}}$: Amplitude amplification to increase the probability of the target state.\n",
+    "\n",
+    "For each component, we follow Section 2 of the paper. In constructing $U_f$, we determine the QET rotation angles using [pyqsp](https://github.com/ichuang/pyqsp) or other techniques. For evaluation, we verify correctness via state-vector simulation for small cases and perform resource estimation.\n",
+    "\n",
+    "For Gaussian state preparation, we set `f(x)` to be the Gaussian function described in the[ MIT iQuHack 2025 challenge notebook](https://github.com/iQuHACK/2025-Classiq/blob/main/classiq_iQuHack_2025_final.ipynb)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.80.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# import all necessary modules\n",
+    "from typing import Dict\n",
+    "\n",
+    "import numpy as np\n",
+    "from matplotlib import pyplot as plt\n",
+    "from pyqsp import angle_sequence, response\n",
+    "from pyqsp.angle_sequence import QuantumSignalProcessingPhases\n",
+    "from pyqsp.poly import PolyTaylorSeries\n",
+    "from scipy.integrate import quad\n",
+    "from scipy.stats import norm\n",
+    "\n",
+    "import classiq\n",
+    "from classiq import *\n",
+    "from classiq.execution import *\n",
+    "\n",
+    "print(classiq.__version__)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 0. Set Parameters for Gaussian State Preparation\n",
+    "\n",
+    "We define the parameters for the Gaussian state, including the truncation value, decay rate, number of qubits, and the Gaussian function."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Parameters for Gaussian amplitude\n",
+    "TRUNCATION_VALUE = 2  # truncation value of the Gaussian\n",
+    "MIN_X = -TRUNCATION_VALUE  # min x\n",
+    "MAX_X = TRUNCATION_VALUE  # max x\n",
+    "EXP_RATE = 1  # decay rate of the Gaussian\n",
+    "F = lambda x: np.exp(-EXP_RATE * (x**2))  # Gaussian function\n",
+    "\n",
+    "# Resolution of input x\n",
+    "NUM_QUBITS = 8"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 1. Define $U_{\\text{sin}}$ circuit"
+   ]
+  },
+  {
+   "attachments": {
+    "image-2.png": {
+     "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAEjCAYAAADHbIDEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAFQTSURBVHhe7d13eBRV2wbwe7PpyWbTiEiv0dB7zwciTUB6TRBp0lR6UakiikJCEUOoAlIVAkiR/lIChqoIAhKUqighCdn0zW5yvj8SSDLZlN3Uyd6/65pLfJ6Z3cyemdlnZ86cUQghBIiIiIhkykIaICIiIpITFjNEREQkayxmiIiISNZYzBAREZGssZghIiIiWWMxQ0RERLLGYoaIiIhkjcUMERERyRqLGSIiIpI1hbmMAHz37KcY2vtrhEoTeTQkKAIr2kmjOTv+oRsGbZdG86jJYvxydCQqS+M5Oo6JboOwVRrOo6Zf/oIj7xn5jkW9jo8C0K7hXNyQxvPIlHZ8GNgOjWab+I6WQ7Dv6Qp4S+M54TrmypR1LPJtlftjrkxpR3PYVs1hHfO1rdaegl/Ozsq0rZpNMfPHxdWYO+sy3l0+HdUtpdnc2MCjelW4WknjOdOF3cdfkVppOE9s1FVQ+VVbI0+d6RB59y+EJUvjeWEDt4qVUcbByHcs6nVMicLj0P8QJ43niWntmKJ5jNB/TXtH2HigelVXGPWWXMdcmLaORb6tcn/MhWntaA7bqjmso6nbqlarxdVr5+F4NxGvTp8Cb3Vq3GyKmeRD78K+969YfPsaPqwqzeZGAYWFAgppODdCIMXEj1ehsIDC6DcEhEiBaW8pl3UUECkCJr5jka8jFApYGL2SXMecFf06mratcn/MWdGvozlsq+awjvrQ5WjZcDbq74nHt2+lxsymmMEBXyh6/Aq/u7cwtYY0SURERLLwpz9q1ZyGhvsFtr2dGjLqjCIRERFRScNihoiIiGSNxQwRERHJGosZIiIikjV2AC4AiYmJ2LVrFywsLKBUKqVpKkF0Oh0GDBgAGxsbaSpbkZGROHToEKysjLz3kIqUTqcDAKPbl/Lvxx9/RHR0NPcRE5hyTDJ7BjoAs5gpAEFBQXj33XdhYcETXSVd2bJl0bx5c2zZskWaylbv3r1x4sQJKIy+3ZGKWkpKCn744Qd07dpVmqJC1KlTJ4SEhHAfMYFSqcQXX3yBcePGSVOUHRYzhVPM7Ny5E4MHD8Z///3HXyYl3IgRI6BQKLB3715pKltdunSBWq1GYGCgNEUlSExMDKpUqYJ9+/ahZ8+e0jQVokGDBiEyMhI7d+6UpigXNWvWxJw5czBp0iRpirLDYqZwi5mkpCQWMyVcv379kJycbHQxU6ZMGaPO5lDRi46OhlqtZjFTDHx8fKDRaHDo0CFpinLh7u6O2bNns5gxhoFihtdFiIiISNZYzBAREZGssZghIiIiWWMxQ0RERLJmPsWMpze6t+mIZh7SBBEREcmGRzN0bNMd3p7pIfMpZmoMx46fFqGlSpoofcKC3kWjvhvwUJowhjYUG/pWQ7vAfL1KwdHsxrvVemHrE2nC/OSnfTVXNmBMt3YYNHoQWpYrh0Y95+JgSfhM2b5UYDS4vKgLGn0UDK00lRdPDmKuz7uYEbgbG/zG4F2fbPYRbrPFR9USi37ageEZ7kw2n2JGaQNHlT0sS/mYTmFB7+L/lpfDVyt8UVGazIOwE0sx0acLGjX2xoQDD/AsNkU6S/Fw6oGAnS0QUL8XNpjxwSNf7Xs/AD36nMUbq3/EuqXrcOTnTWhzfwkG138XuzXSmYsY25cKhAaXP+sBn18GYOcnLWAtTedGcxxjWn2E5HEBmD+8B3zf90fAiOcY22oMjkv3EW6zxUdhCXuVI2wyDLhvPsWMObgwA82G/YNR6+bijfK2JjWue9tx+GLND/jflg9RQSdQYgYhUljDsfEk/LDUDjOazUCwXjqDGchn+17/zg/ny1ZHRZUaKkcV1JXb48tZ3REbvhOLNptynqcAsX2pAIR9NxQdtnrBf/kQ1HCygrG/XcO+/xKbwlqjc0tH2Ntaw9bOEY7t+qJr2CZ8+X1Y5pmLcZt99OhRiZ+KnKB827FjhwAgkpKSpKmiE3tMTKhoK+rPvyISkqVJE9z1E16A8Fp8T5rJtzurOou2XTuL118fKLaE3hG7PugsOg+eIAY2flW8PumYiJIukEGK9i/xtbetUI09Jk3lSd++fUWvXr2k4Rx17txZDBkyRBouWgXQvj9PLytgWUV8fClD8I8vhScglMOOZAjmg+6O+KZrW9G50+vi9QFbxJ3QXWJC185i4KSBouGrr4sJh3Nq3fy1r0ajEQDEvn37pCkqZIMHDxZdu3aVhovWvW/E/zm4i347n4ikFGkyb358x1LAa7H4M1P0T7HYC8LynR8zRV/IzzYrhBBubm5i2bJl0nCOPvzwQ+Hs7Fxip2nTpkn/5EJnPiMAF6KSMAJw6Bd1UG+JF7b9sRN9XymAh12mjbCIxfdwa3pVadZ0cbsxpMlljL3YDF+7DMZPqhaYdSII779mD8VPw+D87n2suH0FH2T7linQnp2O1zp9hwGnn2FxC2k+Z3IdAbgg2lcfH4XoRMDWyRn2lqkxza5ecBvwI1qteYyzoytIFzGaNmgIGlwci4tNvobLkJ+gajULp3a9jxr2Chwd6Ywh91bgzqUPUFm64Eumty9HAC4+xT8CsBa7h7hi0M2PcennWWhkZ+w5GQB4iGUNqmBKsh/u3ZiK9EPQffjXrYZpyqV4cG2ygW3X9G0WJo4ArFKpMHLkSHTs2FGaKnb79u3D/v378fTpU2mqcEmrGzJesZ+Zid0lfO0sROUpP2f/i0QXJS6tHS16th8oBvZ4XVSt2kL0nHVAPEiUzpimsM7M/LZBTN5wW+hDF4k6gPCcf13E61P/6MQd3QTQQPjdly4kobstFnophG3XLTmexTFElmdm8tC+ifcOiDkD2oqewweKtlWritfbjxbrQ3L5dMIPiFHlrYSHz07xONHE0z0Sv62bLNb/rhd3vqojAE+x4Nd4kdq8iWJ7Dwg09hO5blEmti/PzBSfYj8zc2uhqGUN0fHb/4Remnsh/JJYP7anaDt4oOhZp6qo2rynmLPvgUg/BN4TfnUgUEe6jWYXz8DEbVaYeGbG2tparFmzRuh0uhI3+fn5iTJlykj/5EJn7GV3KoG0h7dhV0JFDOjbDFYGf5BocPzD5pgcMQbr9q7Duq0h+HlrJzz2H4wGDSbieJx0/txosHu0F7zq5mVqibmnM9xTUNsXC4d4IuLcadyGNyYMqw07Zeofffb4McCjE7wrpc9ukKUn+vnUROLxDfjBDDre5dq+dwPQuUsQ6nz1I7Z8vQ4/XvwfPim7FxM6V0WXdYb7wmhvb0Cv1hPx/OOL+G1tH5S3yXAouLYU7bK0YzbTwMx3VdV+ZyHeeT0CISdvA20mYGhdOygVAPRncfQw4PGGt4FfthJm1r6Uf9e/X4c/kjrCp7sHDJ631BzHmNaT8XTkOvy4Zh22BP+MHV0eY8mQBmgw+XjaXU+v4JWcNs7Kr+AVaeyFYthmlUolLC0tS9xkYVFMZYW0uiHjFe+ZmUSxq6+VgMdocSS7nwS3PhO1a0wTwTF68eKHfYo+XlyaVlnAwkY0XvFAskBuZ2ZShDbmuXj+PC9TlIgzcDrhyHArgZrzxPUXJwRid4nBNhCVZ1wT+thL4pulZ3P8hZP883ThAUvRdt1TaSpH8jszk1v7JopdPvaiy/q/hfblx5witP+tE90BYWk/UhzTZV4i6vh00bzJaLHt5nMRk5gsUk7NEQ3nnU2fQRcvorK0YzZTdILIck5Hd0S8awXh+en1l7nE3YOFNSqLaVf1IjHkG+F/yuDKvGRK+/LMTPEp3jMzv4lPK1sItFgmHmU91AghhLjzeW1Rc0rwy7PAQqQIffwlMaUShIVNY7HyXmos9AtPAeVokbkH2RExWgnh+UXoy+OnIaZssyIfZ2bWr18vDZcIS5culeGZmbCt6OVWDXOvSBNFQ/P9ILhVm4HLRdiLvMTRn8XB/TqgcWu0dpImUz08uhu37wVgyrq/XvbuVyjt0Kj3AHikaHHt0BlI+unnQgFrR2c4O+dlUsM+y+mE6wg5oQNaNEatF1vgzycRpPXAgJ518Nfa8VivL4dsVgcAYNGoCdpCj/OHz5g2loRc5Nq+Z3FwdzxOTv0Yx+JfxBSw9hiAvl0Affwu/PRy/9QidF0vNJj6BP3HtYftnXM4feQnLFu1EkJV7uUrwtIO6iztmM2kMnBX1Y0Q/E8HtGxU62Xu7LEgJHkMQL/af+GbSeuRUs7gyrxkNu1L+Xf/NPY8ToGHd2uUlx5qAAAPcSToNv4KnILA0JdHQCjtGmFAfw+kaK/h4JkwAApUH/E5+jnuxJHgDIsHH8FOx374fET1HO+O4jZbvLIch4wSE4Y/Ix/g/n/SRNFweq0qVA9WYvUJacaM3L+KqzrAw6s6HLLZ0yq+OQCty1ZErarumeJKFye4Akh+Ho6X34M3tmLi5IkY88E3CAUQumoMxkyeiInfXc+0bL5o7+HWP4C3d8P0U8JNB+K9mhY4498Noy6NxQ/jquZ44IBNIzT2AvQ/X8Fv0lxpkmv7NkSvQZ5waVgbVTIOqqFQQeUMADGIjUoNXZ7fAM0m/YSHN3dh7sRReHfoYAweMhiz92lQ/7Vse1wbTXvvFv6BN1o2SD/h32LAe/C0OIMlvUfh4ugf8EF1gyuTzlzal/LvxlX8ngI08KyezRdaRbTr3xruFWqhZqbrREqoXF0BJONZVOoR0MKjJzaeX4nYL3thRuBu7A6ciF6fxWLl+Y3o6WH41V/iNlu8pKdqjJJ2KcJnvzRRRPT3hV8TCOtBuzJ04ip6xXqZ6dA7QgmI5t/8I82k0yeI6OdRIlZyuefBsvpCCYimSx6kXyrQJ4rY2FgRo3kuIiIiRMRzjYiJjRWxidl2qzNeilbERESI6IydTlN0Ii7quYiK1oioGG3WSxdZxIkt3SCgeFvsiJXmsie7y0y5tm+KSIqNEs+jEzJ3fIw9JoY5QcBmpDgcnxrSxaW1qYEptgA33RRtjIiIiBaZmzdORD2PEtGaKBGjzb11TWlfXmYqPsV5memBXx0BeIhxJ9I2dAP0CdHieVSspAP9A7GikVIATYX/Xxm2yWStiI2OFnEJWqFNiBXRmliRp03WhG1W8DJTgcml1CzhlJUwanxHJO1ZhS1F1OmqpAn7918kA3B1cZGm0iltoXJWwyHj5Z67AXhn1u9IbrAAq8ZVTP9Fo7SBg4MDHJ2c4erqCldnJzg6OMAh41CL+aWwhqOrK1QZO50qLGGvdoZa5QS1o3U2v7AysoOLCwBxD/8W8R2ARSn39lXAykENZ5Vtho6PGhyfNgLbY9Tot/EzvGmXGrW0T2tTA5NDAY4ooLB2hKurCpmb1x5qZzVUTmo4WufeuubSvpR//z2+B8ACLk620tRLSlsVnNUOmTrQh658Bx//lox681dhfJUM26SFNRxUKtjbWsPa1gEqJwfkaZMt6dvs7QB0qesFr3JucHPLOJXL0pEfp+dmna9a1g7/JUmemqjksoBTLx90TwrG1gO59PrQBGPp7N0ILWX9a+Kf/wsAUChyOW2f0ZPdeLfDDPzT61vcPjkdDR3kuBkokLrKkYh8Ls2VHsa3b+pw7n2DqmH2kWvY2K8sCrBOKULm0b6Uf5HPEwCj9pHUx4J0/Ogf9Nl4G2dnNoRtgRwCS/g26zkSPwSHIOS3Qxj3SiQiIyMRGdkY8y7cRMh6yeNRWn+EkL3j4B4ZieR6w7BszxXcvRqSdb7iog/F7tlLEZzhERMF0oTFSeHsg3EjlDi/fA1CpcmMft6I2f6LcKQYRlkuTEIY9+wk7e0AdGk0Dw5+v+Pq2kHwdFIgNkLO3dUESvOwj0a1r16Dgx82h09ITxy7fhDT21eGVfwzaOTcvKW8fSn/jBv3VYvQlV1Q/1MHLLl2FasHekKdHAuN0cNT5KSEbrNKWzg5O8O5TFNMm9Y9LXgav/zhkrUjv5U9ws6dQEzPNbi4ZyEGtakCV5dsOvwXh0dHsMh/Njb+nB4qEX9Xviis0XHEB3ANXYo1F6TJDPRaJCQmQGfEd4McvFIup4ERMtOcmIG2Q69j6Mnz8OtVBc4O1rC44YfmM49JZ5WReqhccH1XS5w8t682FBsGdsaq8itx4vvxaPqKCraWSTgw9m1kM9SMTJTu9qX8e6WchzRkmF6D4x+1xZDrQ3HqlB9613CGg7UFrvs3x7RT0pnzo6Rvs0qoB43DSBsA0GFH4FZIn6EZurIdul8cjVObhqGmix2s08YCKzFSdEhITIA2w5UW+RczAKyav4OhFTTYsDPj/XTmwc7lVQBAaGjO31ih3/VCgz7fQ+GVjOC18/DxjEmpdy1N+wYa9wy35crGQ4SGAoAD7G2kudIjT+2rCcaM1s0w4c+yKPtwH/znzsSUKRMxcfJQzAtyRdmy0gXkwDzal/LPpcyrAMIQei+HU5D6UGwd2AB9dyhQSxGMgIUfY9qUiZg4eQymrNKgTB7roZzJZ5tV2HfE+xNSfyglnViKdXfTc5pDYzAkuD92rRqCms556b9YMhT+3xlxGRvGtUOjdoMwZvQgtBv4OS5HhOHytxuw9ba0HjSRZR28/0ETRK8OxO4CPV1YmNJH0S2XoZNVOa+MI6xWg5ubG6rVbYeJ269DY6C/j+K111EPwL2w1L4VhoRt74Vm43/Cw5i/ceWHrdi4Zg3WBKZOm84+Rb06r0sXkYHniHgMoNJrqO8gzZUERdW+lzG3QTesvKZB/M3D2L5xA9amte2awL34w6UBXldJl5GDkt6+lG+a3RhT1wteXuUyd0bNOMJ0NTe4vVINXm9OxNYbhr8vqrzWAEAKnkSmjUGQRRi2DmyGsQceIubvK9j53Uase7mPbMKZsHrwek26jCnktM1aod6YD9EUAHTX8cXaywAAzZExaP6VG75YNgp13eRTyKCwixlN8Aw0qtkB69VzsHfPOvgvXYcfZwqMr/kaOkyYgInLLmY/uJA+FEvbuGFinsaQUaLSwGFoow3CtsPZvmIJ44QeS0MQEhyCPe+7p3bGchyGHcGpsdTpKu7e/h07plXBkdHeqFquF7ZK79qq2g5dPICUm39kO/Cde98tuPfoP4RHPMPTJ0/wJMP079Nw7B5gL12k5Iu7g9/+Azw6tUO1EnYGNFVRtW9DfPTLA/wTFoGIsH8zte2TJ//h2Z25aFgiP59clPj2pXxz6gH/4BCEhOzBOLfUDqmqoTsy7B8hCLl6F3ev7MAnFY5grHdVuPXdijBJ0W/R5g10BHDx5h+ZEy+5o/+me3j0Xzginj2V7CP/4mn4bgzMeQzHvJHZNqusOgpjuwFAMqK++RRLD32OAYvdsHLzHLQrZwMLGaxDRoVWzGhPTESDbivxoNUSfDerLSq5quDoqIK6/gcY2zwK0XHxaNymETKO8/Vy2SfB+LxbM8y+EImI1I7qubKoMATDuyXhUMCWbA76Jc2LUXSTcOfiXwAAm9Zt0cQ94wirLnD1KIsmgwOwa3pZPH/2E8Y2m4HgjDuzRWN0620DnD+NM9nUcRY2qiy34macVNYy22oBIPgwjqTYoG3Hxki787iEKar2tYS9S9Y2fTk52xl+Vk1JV+Lbl/JNYQ1HZ2c4J93BlXsAYIPm/9ck8wjTLq5wrdAEA1ftwsxyzxF5YCzqfyTpTqBuj95tAP3R09ncBGIBG5WBfePlpEKBHALlts1aOGHIpJFQAxCJxzB7zG8YuGoO3qhiB8uC+DyKmEIY1xU8sz/9UavmNDTcL7Dt7QzxuOOY8Prb+Obvypj1yw182jDj6arrmFexPhb83RTL7l/EpCoZP7UwHPf7HAe0XmgT8S0GLrsMH+lrZ0sg6fB7cOrxM2Zdv4U5XpL0AV8oevwKv7u3MLWGJCexbt06aShHly9fxrp165CUlAQrKyNvhNUfxTD7LtisAzqueYajo90Njnybsm8QlL2/BxS2mHwmAUu903P6o+/Bsct3GHtWi+UZ4qVZ8EQ1/m9NJ+x4/AMGlTH0iRnWqlUrJCQkYPz48dJUtlasWIGGDRtiy5Yt0lTu2L4mMaV9o6OjoVarMX78eDRo0ECaztF7770nDRWIsCNzMXr+WVSe/wNWdMmlY0bcdWydNgEBcf2xJvB91MvlUoX22lZMmBqAxH5rsHZcPRRUN42zZ8/izp070nCO1q9fD1dXVxw+fFiayt3hYbDuuhk6dETgs6MY626ovVNwwFeJHtsBhcNknIldivRdIQWP/Vug0gw7rHl8BqOLqQugKdssAKjVanTp0gUdOnSQprI1btw4fP3110YdxwzS34dfy2qYfgWA4zic06xC63ye4liwYAH8/Pzg7+8vTeWoRYsWqFu3rjRsmKHaQzqKnlGyGQH46Zr2wkYBAa/PxR/SgWPvrRD1LSBQaYa4pJXkRLJIio8VsfEJQrtnkICB185RwmExysZCvPbZHWlGiP0+AvASfneliaxeffVVoyZnZ2fTRwD+ZZ6oCAjAUyy6nf1jzBJ3dBMABGAjfA9IxjtO+kVMrQRhO+xA5nhppTsrJqsVwnPyzyI6+4/MoObNmwtbW9ssbZjTZGNjY/oIwGxf45nYvi9GAHZxccnShjlNlSpVkr5UATkmPlDZCiulUtiohohduQxT/iCgjXCwUQqltb2o+7mBY1gmD8TKtg7C2lIprO3rioW3pHnTnThxIstnlNtkZ2cnunTpIn2pPPltTsXUbd9rkbiTbXsniu09kDqfra/4STLCbnL4BtEdlqKBX26fWyExcZsVQggnJyfh5OSU5TPNaQIgAgICpC9lvKgjYqhb2ueqsBUjDkpnMN78+fOFhYVFlr85t+nXX3+VvlT2DNQehVDMPBWbO1sKAKLytItZhqV/urGzUALCY9QRkeOIz/t9jC9m/vtWdFRAtFv9RJoxqpiJjIw0alq/fr3JxcyDr5sJC0DAY7Q4ppFm0x0bYZX2ZddRbHom3Vv0InJnP2Fj/YZYn92o96XI083dhK1tR7H+z/SngOdV7969Rbdu3bK0YU5T+/btTS5m2L7GM7V9XxQzW7duzdKGuU2FI1rsHeqReiz02ZPtE51fSL7lL5paQkDtLRaej5OmJZLFH0uaCgBC3W6huJDDtmWspKSkLJ9PblPfvn1NfJzBA7GipYUAIDzeOyayXWvdMfGuVdqXbpdNIssukqIVv8/3FMoyU8RZyVPii4Kp26xIe5zB559/nuUzzWmytrYW69atk76UcaLOiunN2ouPf9osRtqkfrbWb20ROT/PPnf+/v7C3d09y9+c26TXS8985MBA7VEIxcwRMcYKAvAQo49mLVd+HGolABvRPygm50Y3oZh5urqdsEJ38W2EtIQyrpgxlunPZkoU3/dRpu6gb23OuoO+8M8W0TVtY6s3/4rQGpgvJelv8f0AN2HvW7zPqSp0scfEB+UcRceVf+bxeSmZFe2zmdi+RstH+5a8ZzOliKTY1OdhPY9NyvLDLgt9gtBERIiIyGiRoDOwEUgkJ2hERESEiIxOEPrcZy9UJj+bKfZ70dMyddvv9N2zbL8Tnm7uKqwBAdQTC65qDc6XHHNJLGhoK+p8UcRnZ/KxzYriejaT7o745o0aot+GuyJepxW/TK+cepyyaiiWhEpnNk6RPJvJQO2Rz6tjhiQjVgcAVVH7NeldMpdxap8OQH20buQABcKwtWdLBNyXzGaSUKxZfg4WI8bB16UQVqtQnMWpA8kAAE/vlnAzdJlVG4qlvmNxXKuG9/wjODi1gcHOagqrcui9bBW6HhuOoUGGb2GUv9RnDv3QaCkCh1fN4/NSihPb1zhya9/cKGDlkPo8LGcHq9zvtlDawsnVFa4uKtjmoQemha0TXF1d4aKyRUkb0yzPfj6Fn/QA4Ik3mroZ7E+mvb0U/ccfR5LaGwsOHcT0+tYG57NwbITpaz+B5Wf98fk1abawyHCb1Ydi68AhOPvOQWwcUg12ltaZbtOe++VB6RJGyU833PwohI++Htq0AQBX2Dtl3uQ0P67GxhgAldrhjUoKIO4Mgu53gnf5TLOZ5tpObAhV4p0BHQ1+GZRI187jkA4APNDFu3qmHVSrCUXwtxPRrqo3VmIY/E5fw6GZb6KCY3b3pihg9WpvbAwJgHJi2yLcmYtO6MoeGBc2A0c3vouqcnieFNvXKLJrX8q368GHkLqLdEHrTPcza6G5HYwNk9uharuVUA71w6mrhzC9UwXYZreLQAnbhtNx9HhP7H9zEHYXQc0vv21Wg+MfdseG177AUt+aLx/6mvE27YStq7A1QrpcyVcIn345DJ48BGqcwKGTL+4l1eLh9mHosv4pKgsAr9dABQsgdO1yxAwfgdqG7s82UvDm5Xhc4X2Mb2/k3UTFKOzXEPwDADav4sn3UzBp8qTUaXRvtPRqju4TQvB64Gn88uNijGldGSpbS4O/SF5SWMGx2iCsDV4Cp+DjWYaoljXtZYQkTseh9aNRTyaDObF9jSDD9qX8CsOvF/4BANiUfYKdM9P2j8mTMKZXS3i16o6J515H4MlfsG/JGLSploczVkpblGnxMY6d7onHB0OzH8esIMhum9Ug+OMu+FL9DTbPbodyGU8jWTjBd+4UVAaApBNYttnwTe4lWoarUMYzcN1KCCFSkmLEvZ1TxJv1vEQ7n9Fi4Js9xQffnhcPIqLFw31ThHflcqLFm+1Es2Hrxd2YbC4yGtNnJna38LFVCM8Ft0W2XYhKYJ+Z1P5DEGjhL/6MjRExL6YYjYh8+pfY1MdB2Dq5iF6bn0oXzVmKTiQkGL6uLFspOpEYn4d+B7koyj4zbF8jFED7lrw+M+bDpD4zuh9fduptuvTP9P0jNkbEaCJFROgm0dfBVji59BJbjO34nqwV8YnGd8Y1SgFss6LI+sxEibMfNRA1+q4XoRqd4c9Ff18saZLaHsoyU8UlaT6P/P39S0ufGUBh5YgqfT7DnjPnsW+1P9YFfYdFPs1QyVWFil0/w8Ffb+Bw0D4cXTkE1Rzz/ydoj+zG7sQmGO3jmf0AYZ7e6N6mA5rlMtRD0XnRfwjw7N4NVR0c4fhicnSCi0dVDH6nNxKjn+PQ+Fk4Ll08JwpL2Noavq4sWwpL2Njlod9BicH2NYrs2pfy7cop7NUBgCd6d6mavn84OMLRyQWuNQbDt2ciop8fwrgFRu0hgIU17GyUhbuPyGSb1YYFI6BfQ3Rf/hBd3h+C6k7ZnAFWVkLzNqlfkMnhAfhqewk+9+vRDB3adIe3Z3qo0NpBYWUPJ2cXqFWOUKmd4GiT+gEqrOzh5OIKZ7Uazo42kj8gDMf9JmHS5DF4a3IQACBoem+MmTwJk/yOZzOybxi2fLMHSd3GYlTVHFanxnBsP/QlWpaU59Tc/xn/iwEAD7RrVtFAQyhgrUztSKWL+xfhsnnmFAFsX6LcPAz5H1J3kXZoXD7rHgKFNWyUAKBD7L/hhXvJqNTRInhOK9Sq7o5yr3fHjP0PEJ0YhQ39amHcHgNFyrWleKO6B95eE576/yIR+8dUQ/latdBo+vGS99mrWuLLQ9sxPMMAuAa2oOLkjrbvL8TChf7YefkfhIeH45+QzfBfuBAL328Ld+nsAHD/B6w6l4Tu/fvBKae1UdpA5WRfYoZp1l45hZsCgE1bvNXU8ODXNy6fTfuXNQx2ENdcRsDItzCoWytUbzcXwRm30fsb0LveG1j6e4YYFZmCaF/NlQAM6zYIb7WsjjfmBGfqI/NwXW/U6rAUNzLEiORDi4vBNyEA2LR/C60M/si8gUun0/6pFDCwiyDs0CS81W0Q3qpXC8O+y9jPQ4vjH7dCqwkHs/kRXNpZo8VHP+H85TsIvXsPj/59hvDwZ3gcehn+3Qw8iKrOOOy7fAd/PQ5DeHg4wsPD8e+DUNw4fx4n57c1+NihYqWwhL2TKq3YTZXT138xsIC1XeppRrVL2lNUXZxSTzvaGe5gFbp9Fa4rR2Jcf5XhU2cl1NkjPyEZABq2RhO1ob/8IU6dSO0cB4/X4JllaHMtjn80Epc6rsG6GW0Qd94PH297+DJ747vPcehmGFIKaoxzMkq+2zfuOKYPv4TOq9dhVus4nPP7GFsevUjewHeLDuFOWAqkixHJgv4sDh9KHbagXqsmcDC0izw6hcMvdpGanlkf13A/AD0WuGLBlpXoX+EOdoxfmX65Nu4AVi+/hEtRCsM/gku91GEBXFxfPI38xeQKRxsDH7alHdRZ5nWDq4sLXBzkcUnbUH0gH/pgrPW/A7fxo9DRXg4f9ws3cP74i/4UXVDO4J/+B65eTkn9Z/1qqPpinrjjmDk5CJqwXVhxsjMm9qmIPw6uxzO9B1q1rJg2Uxh+Of8QOqs2aF7txetR0cl/+/61ewVOd52IvhX+wN4Nz6D3aAXvCmnzhP2Ccw91sGrdHFVevByRnNw4j5NJSO0v06Gc4S/L36/il7RdpEHNqi/n0Z6YiUl7NLgc+DnKjvkQjXRHsftkCpLaNUGLF8teP4fjiclo1aK+zL/k5EehMNiahU7e7RyyF+ujKmKobxPI54ZsAPdPYd8/yKE/BQDURqMXz8qztceL4QcffrsCt2o1g5N7f2y/+CnqW1/BznVRSPF6DyPqpb2S/gJOnU4BurdHy2x7RFOhKYD2rTJwOy7Oqw/rizuxQZMCz1EjUOfFC108hVMpwNtvtMzmtYlKtodn9qUOW5BdfxkAqNUIDdP+aWn/cg/B+mW34NXQCQ3n/Y4tvs6IOLIdJ5KAvsMGwTFtrtBzpxALT7T3LqanTpoxeQ6aV6kDpo77BENelsNFzK0Bhsz6GlMaWEozJdANLG1XC7Xq1UL5Rh/j9xQACMd3g+qgVr1aGPSd9MpuOYwJOoyvBtSF+tdzOBcWhtATG7DfdT4Ch5aHwsIGTi72UF7YiQ3RAp4DusPzReGSdpeAd/vWkMMnUzoUbPsqbZ3gYq/E5d0bEC08MbBn+p16l0/vhQ7eeLMVW5dk5NpSvFGvFmrVKo8Gs35H6i7yHfo3qIVa9QZh6xPJ/JXGYPeRr9C3gRrXz59DWFgojq/bD/XcQAyrrIClgytUNs9wZOcJ6NAX/brZpJ29CUPIiZsQNu3Qvlb+vuJIRjLeum08vUiMjRdJBm9aLwL6RBEXn2T4nvkilLdxZnQiPir1gVoR4eEi/OUUISIjI0V0goHRClJ0IiEmSkRExghtcrLQJyVkGTvh6YaOQgGIAXvTR9h5sLSeUMBDzAwx8JpmrvDGmSmM9n0qNnZQCGCA+PFl8z4QyxsqBDxmiksGXtKccZyZ4pOncWZ08SIqMlJERkZk2D/CRXhEpIiMjBaJBrbnFF2CiImKEJGxWpGcrBfahHiRmOlBVBfEREcIeH0pXj5SSHc0dfyaLptFTIY5S6qiGWem6BTJODMG5LNsVcLGwQ5WxXOJDFDawN7OyvD11hLHEnZqF7i4uMBV0iHLxcUFKlsDTaGwhK2jGq4ujrC2sIDSyjbL2Anu1avDGoClSPvd/mQrpi+8CYHOaNXEwGtSISmM9nVHDU9rAJZITjtzG7Z9OhZcF0CnVmho4CWJSixLO6hdXODi4pq5o6mrC1xcVLAxsD0rLG3hqHaFi4M1LCyUsLa1g02mB1FVgFdDAEKf2uEeGlxe+Al26oC6b7Qs1R3kExISEBUVVeKmxMTEYrnUpBDF8a6lzM6dOzF48GAkJSXByqqIe+/on+DHCV3w3gFHtH+rEp4+vou/j/6CPzttQvSRd2Hwjkcz1q9fPyQnJ2Pv3r3SVLa6dOmCMmXKYMuWLdJUodM/+RETu72H/bbt0bXSUzy4+zeO//on3twcjeND2boZRUdHQ61WY9++fejZs6c0TYXIx8cHGo0Ghw4dkqYKWQq0V1ei36CvEOr5NlriDv56cBnnbjli+s//YnFLAxVSCePu7o7Zs2dj0qRJ0lS27OzsoFQqYWOT5R6vYpeYmAhra2s8f/5cmipULGYKQLEWMxDQxUUjRitgZa1EytXP4NVuCWqsfoQzYyrK5KxV0ZFbMQOhQ3x0DBKFFawtUnBtgRe8/Wtg1aMzGFeRrZsRi5niU3zFDIBkLWJi4qBXWMMScfjB51WMOv8+ToevRFsZdCszpZjZsWOHNFSiqNVqdO3aVRouXNLrTmS8vPWZKQT31osur7gJr3nX0wJRYvcAO2HR5FNxOdbABWgqxD4zBe/B2i7Czc1LzPk1LRC1W/SzsxBNP7tssH+BuWOfmeKTpz4zBS5RHJvkJdzcBordUWmhXxeK2tYeYsj2J0InmbukMqXPjFarLdFTkX8X5r/PDBUrdSW89qoS1lfXYNLkSRg2cDRONN+Du0emo6EsHkdPOXGq+hrK2Vjj2tpJmDR5GAaNO4FWu+7i+LSGBvsXEJkXa5TzrAlHp8c4OG8SZo4fhN7LEjDz/DUE9i1bqu/ktLa2LtFT0V+hMKfLTJpgLPULQ/d5feFZwFt5sV1mEjrER8dCp7CCUgmIZAGFtR0cbLN5kBjJ6jKT0MUjOlYHCyslFAoBkaKAlZ0DbEvKMzlKGF5mKj7FdZkpOTEG0YkpsLJSQiEEkoUStvZ2sM7USbhkM+Uyk9nThyLo04PwmDYF3urUkPn8vvt5I+b4fYEjL4eELwUUVrBXu0DtlPoICJWTCo4sZEoNhZU91C5qqBwd4eiggkrlyEKGKAOlrQouzmo4OjjCwVEFJ5W9rAoZMtGjI/jCbw42/pweMp9iRq9FfGICdGnDYxMREZEMpeiQkBgPrT49ZD7FDBEREZVKLGaIiIhI1ljMEBERkayxmCEiIiJZM59bsw/4QtHjV/jdvYWpNaTJ/NmxYwd8fHywZMkSWFgUfH2oUCgghDD6v8YydTk52bx5M6pVq2bUrdkdO3bE8+fP4evrm6/PNzfS9svrfymVVqvFJ598wluzi0G7du0QFhaGUaNGSVOFTrofSP+/pJs7dy4WLlzIW7ON8ac/atWchob7Bba9nRpiMVMALly4gJ49e8LJyalQipnioNPpEBkZCRcXF1hbW0vTslWhQgXMnz8f3t7e0lS2jh07huHDh8PR0VGaki2tVouoqCi4ubnB0rKAB14qJsnJyahevTo+++wzNGvWTJqmQrRo0SKsXLkSKlXJe15YTEwM4uPj8corr0hTJYKdnR0CAwPRsmVLaYqyw2KmcIoZvV6PmJgYaVjWbt68CW9vb5w9exZ16tSRpmVLqVTC3t7eqC9wnU6H2NhYaVjWrly5gk6dOuHKlSuoVq2aNC1blpaWsLOzM6p9Kf8SEhKQmJgoDZcIK1euRGBgIG7duiVNlQgWFhZwcHDgNmsMFjOFU8yURtevX0f9+vVx7do11K9fX5ommbtw4QJatmyJ0NBQ1KxZU5omKjWWLFmCZcuW4cmTJ9IUyZWBYqZ0XBMhIiIis8VihoiIiGSNxQwRERHJGosZIiIikjXzKWY8vdG9TQc085AmiIiISDY8mqFDm+7w9kwPmU8xU2M4th/6Ei1L3jAIRERElFeqlvjy0HYMz3BnsvkUM0obqJzsYamQJoiIiEg2FJawd1LBRpkeMp9ihoiIiEolFjNEREQkayxmiIiISNZYzBAREZGssZghIiIiWWMxQ0RERLJmejETthW93atj7hVpouhofhgE9+ozcVkvzRAREZG5ML2YiQnD3Yj7uP9Umig6Tp5V4Hj/a6w+Ic0QERGRuTC9mBECKRBISZEmio6i7lh80DgR2zYHQStNEhERkVkwvZgpCZSV8N74DtDuCcCWJ9IkERERmQN5FzOwgFNPH3RPCsa2A2HSJBEREZkBmRczgMLFB+OGK3Fu+VqESpMZaYKxdE4QQtlZmIiISL70oQiasxTBmvSQ7IsZKGzQceT7cA1dirUXpMkMft6IOX5f4MgjaYKIiIhk49ERfOE3Bxt/Tg/Jv5gBYNX8HQytEIX13wdLU+n0WsQnJkBXjB2WZSMuFL+c2gsAWPztXhy/FsYO1kREVDKk6JCQGA9thisthVbMaG9vxZheb2DQ6DHo3bIW3phzHBo9EHZoEnp3GIQxk8egd4dhCLiS4TyRqSzr4v33myB69WoExUmTlHdahK4bhFqVmuPDT74CAOxeuxh9272Oci3n4niEdH4iIqLiVyjFjOboJHT5MhpjVu7DuqX+2Lx7Cmz9+qJavVrosbUhlny/DjM97+HQmR2YMfwbw31d9KFY6u2OSXkaQ0aJSoOGoU3ibmw7wnMIpnoY2AXNJ+/BncgoxMYnAACSEhMQo3mOyMt+6NtkEo6zWCQiohKm4IuZuOOYPjMc738+AvUrqKFydIRTuVfhkhiDyDsCnaYPQjU3FZI0/0Knd0Yrnw6oIHkJ7ZNgfNGtOeaERCA89Ts1VxYVfDG8WxIOfrMFvK/JBHFBmD39HKLidDB4JS45ATEPV2PK1wZLTyIiomKjEEIIaTBP/vRHrZrT0HC/wLa308OabX3R4d4snJ/dCNaKtODdr1DP8yPcqDQdF0IXo7kNkJwQhah4AWsHFRxtLZE6axiO+32Bg9rX0Tr8Wwxcfhk+ktfPnoD28HtQ9wjB7Os3MdtLkj7gC0WPX+F39xam1pDkJBYsWCANlX739uPzzVeRJI1LWFTojknvNYVamiBZ+fvvv7Fu3TpMnDgRrq6u0rTZmTt3rjRUIMKOzsWY+cGoPP97LO/sIU1nFncDW6dPwKq4fliz6n3UdZDOkJn22lZMmLYK2r5rsGZcXdhIZzDR2bNncfr0aWlYts6dO4czZ85g1qxZ0hSluXLlCpo0aSINFykLCwvMnj1bGjbMQP1R4MWM0MYgOsUeajvly5h2V084DNgPt1FHcG9dZ2S/j6YgKSEeScIS1keGw6bvTiOKGQAJR/CeSzecm30bt2d7Zs4ZUcw0btxYGir1ksL+wO9/x0vDWSncUaNhJThJ4yQrsbGxCA0NRe3atWFjU1Bfg/LUunVrfP3119JwATiOCU49sTpeBwv7wdj27Dv0zeGjfrjq/1BnSggShDVqz/8Vv30sOYZl8hAB7epg6vkECJvamHv5N8yS/oAz0cmTJzFjxgxpWLaePn2Kf//9Fw0aNJCmKI1KpUJMTIw0XKQ6d+6ML774Qho2zED9UeDFjCHHx1ij01odOm1+hiND3dPOwuTigC8UPbYbV8w83YhOr46ALvAJTo15NXPOiGImKipKGir1EncPwKvvHZeGs/KYijN3ZqOeNE6ycuXKFXTs2BFXr15FtWrVpGmzYmVlBQeH7H9imS4G+4bWQO8tYajsswfBW3ujYg4Hv5RbS9Gi/lRcdvDGwp+OYFYre+ksGaTgjl8LvD79MtTtFuLoj7PQvIB+Yeh0OsTFlZ7OcV9//TVWrVqFP/74Q5qiNBYWFkgpzmcTAbC2toa9fU7bfAaG6g9hqrt+wgsQPvulCanrYl5FCKCpWHovRZrM3n4fgTy9frqnq9sJK3QX34YnS1Npr+cl/O5KEySEECmPVglvQCCXyWbMaaGTLkyyExISIgCI0NBQaYoKTIrQxkaK8PBwERmjFQaOSpnpE0RUeLgIj9CIeF3ux8rkhCgRHh4uIjTxIg+zm63FixeLV199VRomOTNQfxR8B2Cp+6ew7x8AHi3RpHzGnyVh2PBWH2wrsNt9Q7F2xTlYDB8HH9fCX63SRlF+OOaNyq0njDe+mtoaltIwERmggLWDC9zc3ODiaJ373RZKW6jd3ODm6gQ7yxxO4aSxsFXDzc0Nrk52yMPsRKVarvuXcR5i26DaKFOmBuZdSY2EHduD31MANG6MhtYZZr22FhuU3eHtkiGWH9e+x4Y7SgwZ0BE23LGNZ2GLtn4hWN0jm06Klk0x+fBWjKnOUoaIiEqWgi1mHu1HwN4/EB7uAEcHAJoTmL36GaqrAUCP5BfzPQnC8A+vY6SfLyoU0F8Q/N0yPCr/Pt5/00qaojyyVL+GYVtv489TyzG5jzc8y3nAs01fjJ+3A1cfHMPCDhVhW0DtRUREVFAK9qupfH98+nFXeDYohz/9B6P9u3vQaNUhXAjeCN+Iz9HyjcEYO6Q9+izWYNSm9RjiaVMwf0BcEFYHRqHGe6NQj7VMPljARuWKam3GYOGmA7hw4zYuHNyIxTP7oH45Z9jzXDYREZVABVJLvKR8BW/M3IYLp76H/7I12LN5MYY1qwyX2j5YffQyzu1dgyWr9mDjQh80r+oEmwJ6d+2R3did2ASjfTyRfkM4mUphaQt7lRourq5wUavgYGcNJesYIiIqoQqonHhBAUs7J7g4O8FR5QRntSNslQrAwhqOzq5wdXaCyskZakdbWBp85zCc8J+ESVPG4q0pQQCAoBl9MHbKJEzyP5HNyL5h2BqwB0ndxmJk1RxKGU9vdG/TAU2z6RJCREREMuDRFB3adId3hqGYimScmbxLQVJ8PJJSBPRJWuhTAFhYwcZaCYWFNeztDdwRcP8bNPL8EOXXabB/mFP2Y9gkJyI6Nhn2Tg7s+U9m78KFC2jZsiVCQ0NRs2ZNaZqo1FiyZAmWLVuGJ0+eSFMkV0KPuOh4KB2dYJt2DiNLbVC8LGBt7whHRxWcXd3h7u4Od9fU5zs5GipkAIRuX4XrypEY11+VfSGD1NsendQsZIiIiGRNYQkHdXohg5JXzBhJH4y1/qFwGzcSHR1YpRAREZkjeRczF/ZiQ1R5vDOkKXgTExERkXkyvZip2AFTxn4C3xbSRBFyrQ/fWSsxtQEHciMiIjJXphczNnXwjt8sdHSXJorQa4Pw1SdvoWwONzERERFR6WZ6MQMlbBzsYVWcXVWUNnCws8q54y8RERGVavkoZoiIiIiKH4sZIiIikjUWM0RERCRrLGaIiIhI1ljMEBERkayZTzGjCcayOUEI1UsTREREJBv6UATNWYZgTXrIfIqZkE2Y7b8IRx9JE0RERCQbj45ikf9sbApJD5lPMaNLRHxCPJJSpAkiIiKSjZQkxCfEI1GXHjKfYoaIiIhKJRYzREREJGssZoiIiEjWWMwQERGRrLGYISIiIlljMUNERESyxmKGiIiIZI3FDBEREckaixkiIiKSNRYzREREJGssZoiIiEjWWMwQERGRrJlPMePpje5tOqCphzRBREREsuHRFB3adIe3Z3rIfIqZGsOw7eAitFJJE0RERCQbqlZYdHAbhtVID5lPMaO0hZPaAZYKaYKIiIhkQ2EJB7UTbJXpIfMpZoiIiKhUYjFDREREssZihoiIiGSNxQwRERHJGosZIiIikjXTi5mwbehTpgbmXZEmio7mh8EoU+MjXNZLM0RERGQuTC9mYp4iNPwe7j2VJoqOk2dl2N9bgdUnpRkiIiIyF6YXM0IgBQIpKdJE0VHUHYsPGydi2+YgaKVJIiIiMgumFzMlgbISRo3rAG1QALY+kSaJiIjIHMi7mIEF1L180D0pGFsPhEmTREREZAZkXswAChcfjBuuxLkVaxEqTRIREVGpJ/tiBgobdBzxPlzvLMXai9JkBppgLJsThFDe+URERCRf+lAEzVmGYE16SP7FDACrFu/gnfJR2LAzWJpKF7IJs/0X4egjaYLIvGjDbuDS/4IAACu2HkXwXXafJyIZeXQUi/xnY1NIeqjQihnt7W0Y27s9Bo8Ziz6taqP9nBPQ6IGwQ5PQp+NgjJ0yFn06DseqKxlKK1NZ1sUHHzSBZvVqBMVJk2l0iYhPiEdSMd59RVSs9BqcmNMa5b3+D598HgAA2LDkI7zdvDxqD9qAUNY0RCQHKUmIT4hHoi49VCjFjOboJHT5SoP3VuzBGr8l2PjDJNj490X1+rXRc2tDfLVjDabX/AsHT2/HjBHfFEBfFyUqDXwXbRJ3Y9sRHpGJstLixJSG6Ot/ERGRUYiLTwAAJCbEQfM8An/snYQW3VbhoXQxIiIZKPhiJu4EZswMx/sLR6BBRWc4qVRQly8Hl4RoRPyRgo7TBqG6uxN0mn+h0zuj5aA3UT7j8hGXseH9Pmg/ZDD61K+BGq36YN7+h7mOI2NRcQiGdUvCoYCt4H1NRBK3/TFl3QNEJyRLMwCAlKRYPD8zA3P25LanERGVPAohhJAG8+RPf9SqOQ0N9wtsezs9rNneFx3++gTnZzeGtSItePcr1PP8CDcqTseFu4vR3AZITniO53EC1g5OUNlZQgEAmhMY22IBKn23G+Nfs4VCH4tbX7+NN5feR5VRP+DXpR1gk/5WEgLan96DumcIZl+/idlekvQBXyh6/Aq/u7cwtYYkJ3H06FFpyCz98ssvaNSokTRMMvRs/wcYtupPGC5l0lm/9SX2T2wgDZd6nTt3loYKRNjReRj7aTAqzduJ5Z09pOnM4m5g24yJWBXXD6sDxqOug3SGzLTXtmHi9FXQ9l2N1WPr5nBsNM7Zs2eRkJB65q402LVrF3744Qfs2rVLmqI0JeVYn+f90ED9UeDFjEiMhkY4wNlO+TKm3dULDgN+hNvII7i3vjOy20dDF9VD92cBuLakDeyVCgACyQmXMf215ljxrAm+vnUZ71eVLpVBwhGMcumO83Nu4fYsz8w5I4qZcuXKIS4uu8435qN58+a4eDGnW8RILlKSYhGbmIcOY1b2cLKzlEZLtZEjR2Lp0qXScAE4gQnqHlgdp4PSwQdbwzajbw4Vx8PA/0OdySFIEDaoM/8XXPtYcgzL5CEC3qiDqecSIGzqYN7la/hE+gPORCdPnkSfPn2kYdnSarXQ6/VwcMjum4eaNWuGS5cuScNFauLEiViwYIE0bJiB+qPAixlDjo+1Qac1Sei0+RmODHVPPQuTxSOsbFINk283wZKrFzD59RfxZFyYWg4tl0agy8YnODwsh183YZvQqexwJAU+wekxr2bOGVHM/PXXXzD1YylNEhMTYWtrKw2TDN3yb4meq8Ol4azaL8XNNW/DWhovxezs7FC+fKaL3QUkBnuH1kCfLWGoNDgIwdv6oJLhgx8AIPmWP1rUn4YrDt747NBhzG6d05dvMv5Y0gJeM65A3fYzHPlxNlqopfOYJjw8HFFRUdKwbK1btw7ffvstQkIy3PpCmZSEY729vT3KlSsnDRtmoP4ogmLmBj6tXA/zHzXF0nsXMblqdntzMn5b9AY6bayKdRc2o4dreubWF16oPesPNFp2H1cnVcm4UCZha9ujwhgHrA7/ESPcJN2BjChmTP1IShshBBSK7NqL5ER/ajRUb67Pte+Z9zcPcXp8xWx+cJRehbOdCyTFPkd0YgqUtk5QO1rn3EkxORFRz2OhV1jBQe0EO8uc/6bkhCg8j9NDYeUAtZMdcpk9z0rb8W/JkiVYvnw5/vnnH2mK0pSUY32e/wYD9UeO+1aBuH8K+/4G4NESTcpn/EPD8O1bfbAt8sX/K1Fn0n7cuvANurhkmA2PcHLPXQBN4PN2xYwJiVCsW34OFsPGwtc1f6ulUCg4KRSwsLDIEuMkz8nK+2N81Ua6pUuoR2DuuxVgYWD50j4VDgWsHV3h7u4Ol9wKGQBQ2sLZ3R3ubupcCxkAUNo5w93dHW7qgitkUEqPf6V1vQpqKinH+vzIdf8yziNsG1wHHh41Me9qaiTs2F7cSAHQuDEaZjx3fW0d1iu7w9s5PaS0c4abqyq94zCA0ICh+Pi3ZNSdF4DxVdP74WRx7XusD7XAkIGdYJO/z4So9LGqgjHbfsLkxtJEGo9uCAxegbaOBXxIICIqAgV75Hq8H6v23MazZ/ZwtE+9O2nOmjBUVwOAPv1OiidBGD7hN4zw80WFHP6CsD3D0XnmY/Ra/zvOzGgMuxzmDf5uGR6Vex/j37SSpogIFrCt2AGfnXiMKzvmY3znuvAo54G6nX0xecVJ3L2+HcNrO4J7DxHJUQ7lgQnK9cP8j9+CZ4Ny+NPfB2++uxcNvzmEkOCN8I34Aq3a+2DcO2+iz2INRm1cj3c8bbL5A7QIDeiKhgvssOjqZQQO8oKLiIUmuxuM4oKwZnUUaowahfo8GhMZprCCg3N5NOgzA199fwa3rt/Cme8D8dno/0P1V5xgY3hnJCIq8Qr28KV8Be1mbEfI/3bCb2kgdm/6EsOaVYZr7cEIPHIRZ4MC8dU3u/HtZz5oXjWbg6degxOftMfQaz44fmwx+tR0hcrGAjeWtcKM09KZU2mPBGF3QmO85+uJHC5EEREUUFrbwVHtAjc3N7ioVXCwTRvniYhIpgyVE/mggJW9E1xd1FA5qeHirIKtpQKwsIHKxQ1uLmo4qV3grLKFpaF31odi2+BG6Lc9Ba8pfsaaL+dg5vTJmDx1HKauioRrGekCABCGrQF7oO06FqNy6lNDREREpZKhkqKYhGHb4JYYt/8+NI+v4octG7E2cDVWr1qN1as24vR/9eD1mnQZAPd/wKpzWnTr3w/qnNbG0xvd2nRA0xyGqSEiIqISzqMpOrTpBu8M40oWwTgzeZWCRE0EYpKk8Res4eSuznKnUugXtVFrQQv8GLEe3RxyOFmenIjoGD3s1I6wymE2IiIqPZYsWYJly5bhyZMn0hTJldAhVpMAS5UTbNMuyOR0LqOIWcBWXQZlymQ3ZS1koA/GOv87cBs3Cp1yKmSQOoaDkzMLGSIiIllTWMHROb2QQckqZkxwYR/WPy+Pd4Y05S2lREREZsr0YqZiB0wZ+zF8W0gTRci1Hnw++RpT6pvXg/GIiIgonel9ZpAMbawWFg72xXfpJlmLWK0FHOyteGspERFlwT4z5sH0MzNQwsaxGAsZAFDawJGFDBERkVnLRzFDREREVPxYzBAREZGssZghIiIiWWMxQ0RERLLGYoaIiIhkjcUMERERyZr5FDOaYCybG4RQvTRBREREsqEPRdDcZQjWpIfMp5gJ2YQ5fotw9LE0QURERLLx+CgW+c3BppD0kPkUM7pExCXEIylZmiAiIiLZSE5CfEIcEnXpIfMpZoiIiKhUYjFDREREssZihoiIiGSNxQwRERHJGosZIiIikjUWM0RERCRrLGaIiIhI1ljMEBERkayxmCEiIiJZYzFDREREssZihoiIiGSNxQwRERHJmvkUM57e6NamA5p6SBNEREQkGx5N0aFNN3h7pocUQgiRcZ5SKzkR0TF62KkdYaWQJomIqDRasmQJli1bhidPnkhTJFdCh1hNAixVTrBVpobM58yM0hZOzixkiIiIZE1hBUfn9EIGZlXMEBERUanEYoaIiIhkjcUMERERyRqLGSIiIpI1FjNEREQkayxmiIiISNZYzBAREZGssZghIiIiWWMxQ0RERLLGYoaIiIhkjcUMERERyZr5FDOaYCybG4RQvTRBREREsqEPRdDcZQjWpIdKVTETdnQe+rR+E5OPhklTQMgmzPFbhKOPpQkiIiKSjcdHschvDjaFpIdKUTFzAp8PXIKDF89i9cDpCNJK0rpExCXEIylZEiciIiL5SE5CfEIcEnXpoVJUzDRHux4q6JL18OjaE02tpXkiIiIqjRRCCCENypNAUkwkNIkpUNqq4ayyzlypHfCFosev8Lt7C1NrZExktWnTJmnILIWEhKBly5bSMJUSbN90w4YNk4YKRNjReRi74Bwqz92BZZ09pOnM4m5g24xJCIzri8CA8ajrIJ0hM+21bZg0IxCJfQKxemxd2EhnMNHZs2dx7949aVi2Dh8+jIMHDyIgIECaojQl5ViQ5/3wT3/UqjkNDfcLbHs7NVSKiplcGFHMlC1bVhoyS7Vr18bNmzelYaJSZdCgQVi+fLk0XABOYKJzDwTG6qB09MHWp5vRN4eK41FgW9SZ8jPihQ3qzP8F1z7ylM6SwSOseqMOppyLB2zrYO7la/jkdek8pjl58iR8fX2lYdmKi4tDQkIC3N3dpSlKU6tWLdy6dUsaLlKjRo3CwoULpWHDWMzkrZh59uyZNGSWrKysoNNluChJVArZ2tpCpVJJwwUgGnvfqYk+W8NQafBuBG/ri0oK6Tzpkm/6oUWD6bji0AafHTqC2a1zOjWTjD+WtIDXjCtQt/0MR36cjRZq6TymSUpKgkaT4TYRmQsICMDq1atx48YNaYrSWFpaQq8v3lt97ezs4OjoKA0bxmImb8UMEVH+CSTFRCAqIQVKW2e4OEkufUslJ+B5RAx0Cms4uqhhb5lD5QMgOeE5ImJ0UFg7wkVtj1xmN1tLlizBsmXL8OTJE2mK5MpAMZPjvkVERKZSwFrlDg8PD7jlVsgAgNIOLh4e8CjjnGshAwBKOxd4eHigjDMLGaJc9y8iIiKikozFDBEREckaixkiIiKStVJVzIQdm4++rTtg8jEDjzMgIiKiUqkUFTMn8PmAJTh48QzWDJiBPdLHGRAREVGpVIqKmWZo97YjkpL1KNP1bTTh4wyIiIjMQikqZlTotuomnj59il9Wv40K0lsVa7ZBt9Yd0DSXEcWJiIioBPNoig6tu6FNzfSQ+Qyal5wATUwy7NWOsJIWOkREVCpx0LxSSOgQq4mHUqWGnTI1VIrOzORCaQe1MwsZIiIiWVNYwdE5vZCBWRUzREREVCqxmCEiIiJZYzFDREREssZihoiIiGSNxQwRERHJGosZIiIikrVSVczw2UxERETmpxQVM3w2ExERkTkqRcUMn81ERERkjkpRMZPLs5mIiIioVCpFxYwC1ip3eHh4wM3JOuuKac5h+dw9uKuXJoiIiEg29HexZ+5ynNOkh7J855daIRsx238RjjyWJoiIiEg2Hh/BIv/Z2BiSHjKfYkaXiLj4OCQlSxNEREQkG8lJiIuPQ6IuPWQ+xQwRERGVSixmiIiISNZYzBAREZGssZghIiIiWWMxQ0RERLLGYoaIiIhkjcUMERERyRqLGSIiIpI1FjNEREQkayxmiIiISNZYzBAREZGssZghIiIiWTOfYqZmG3Rr3QFNPaQJIiIikg2PpujQuhva1EwPKYQQIuM8pVZyAjQxybBXO8JKIU0SEVFptGTJEixbtgxPnjyRpkiuhA6xmngoVWrYKVND5nNmRmkHtTMLGSIiIllTWMHROb2QgVkVM0RERFQqsZghIiIiWWMxQ0RERLJmZDFzBfM9X0HfHWHSRLHQ7PLFK54f44pemiEiIiJzYWQx8wx//RmGO0/ipYli4VSzImz/XIHVJ6UZIiIiMhdGFjMCKQJISSkZd3Mr6ozBB40SsG3zHmilSSIiIjILRhYzJYxlZYwa3wGJewKwlUMIEBERmSV5FzOwgHPPweimDca2gyWjHw8REREVLZkXM4DC1Qfjhlng3Ip1uCtNEhERUakn+2IGClt0HDEeLneWYu1FaZKIiIhKO/kXMwCsW76DIeWeY/3356QpIiIyU9qwG7j7WwhioqMxP2APzt3lrSKlVcEWM9q72PZBX3R4ZxzG9WmDup3m40QkgCeHMLlPB/iOnYxxfTpgRMAVaKTL5odlXXzwfmNoVq/GnjhpMo3mHJbP3YO7HJOGiKh002twYm4bVKzdDlt2/4S4+Hgs+Wg43m5REXV9vgVrGpnT38WeuctxLmMhIYxySPgAwmvxPWlCiKjjYtIb74iAiw9ERJRGaJ7/I9Z0sxfO7nVEnRY+YuPNCPH8dqDoYG0pbBzri89vS18gf5IfrBRtYCP6BCVKU6kOjxAO9k3E1wb+dCIiKi0SxfEJ1YWzvaUAkGWysFYJ146rxEPpYiQf974WTewdxIjD6aECOjOjxYlPpuLZ6IUY3qgSXNVOcHJ+FeVd4hEVfgv6TpMx6HVXOCc/x79Jeqib90P7V6WvkT8WFYdgWFctDn6zFQbva9IlIi4+DknJ0gQREZUafyzF1LX3EBVv+DR8SlIMIk/NwJy9PD0jW8lJiIuPQ6IuPaQQQhgxAt5P8FV0w6+L7+HW9KrpYc029O9yDzNPzEYTB0Va8C6+queJj25UwrTzf2FJK0tAH4eIiFik2KjgoraH5YtZC4RA4qGRcO59CXOv/45PXpekD/hC0eNX+N29hak1JDmJW7duSUNm6a+//kL16tWlYSol2L7patWqJQ0ViLBjn2L8gmBUmrsdSzt5SNOZxd3A9o8mIzCuL1atHIe6DtIZMtP+th2TZwQisc8qBI6pCxvpDCaS+/Hvv2390emLW8jtd6tNvw345dMW0rBZKinHgjzvh3/6o1bNaWi4X2Db26mhgilmRAKings4utrD8kUs7gf0ch6IH11H4fCddejinD57oYk/jJGubyNk7m3c+qRm5pwRxUzlypURF5dd5xvz0bx5c1y8yFvESitHR0fExsZKw2ZnxIgRWLx4sTRcAE5ikksPBMYmQenoi63/bUKfHCqOR6vboe7k84gXdqj76VX8MlNyDMvkEQLfrIspwfEQtnUx79Iv+Fj6A85Ep06dQv/+/aVh2UhOiEJUfG6lDAAbFdwcraVRs9SsWTNcunRJGi5SEyZMwNy5c6VhwwqtmDHkxHjYdgyEtssmhP30LsoU6FmYbIRtQueyw6Fd9Q9Ojy2XOWdEMXPq1CkY9bGUUo8fP0bFihWlYSol7t+/j6pVc9mPzYC9vT1atCiMX+jR2PtOTfTZGoZKg3YjeHtfVMrhOJh80w8tGkzHFYc2WHDoCOa0zunUTDL+WNwCXjOvQN12AQ7/OAct1dJ5TPPrr7/i+fPn0rBs/LmhP8Zsj5SGs2o5C0cWtoeVNG6GSsKx3sHBAc2bN5eGDSvKYubGvCqot+Ahmix7iEuTKiH7fViDk9O6Y9E1Le5G1MGiXYFoc/tjTPnmKTyqaXDuZCL6bgzCvNa576lh695ExdF2WPVsP0a6S7oDGVHM6PWGr7WaG71eD0vLl+faqJRh+6YrnM9BQBsdjqiEFCjtnOHqZJPz7aPJ8YgMj4FOYQ2VizPsrbI/agJAcnwkwmN0UFir4OpccJft5X78058aC+dOG3J9Xl+br+/hf+Mq5vDdZD5KyrEgz3+DgWKm4O5myuSh+LqxhQA8xISzyZkyT9d3E323RKUHbn8u6nX7Wtz7Z5PoprQRTq9UFF3mnBT3I56LqKgIsbGPpbAvO1NczvgiBoWKz2tZCZthB0RCijQnhNjvIwAv4XdXmiAiolIj6U+xrHXWu5gyTerh4lh05u8mkpG7fsILED7700M5/lDIq0c7fVGvbFl4zruSGnhyDHt+SwFQH43qZngL/Q2s35SMt1o6vQzd3bMVLl16oErYfVxP1iL61ZFYNMMblV2doVY7wEavR/zTCDxLfxXDfvse6+9YwHdAJ9iy1CYiMk9WVTFm60FMaixNpPHohlVnVqCdqkC+/qiEKIDWfIT9gUG4+fQp7OztUy8bLVyNsCpqAFbpPcr1Ydgz7kP8NmwFfKukVxtVJ5zF3pEV8ezXC/gHNhi+YDrqOlqlnvrTB+P4UQAdW6P1yyUMO/fdMjwsNx7j32SHLiIi82UBu8qd8Nmxh7i0fR7GdaoLj1c9ULeTDyYtP47Q37ZieB0V+8qUMgVQzJRH39kf4a0adVHuwXL4dh6OPfVX4sC589gw5CkWtekA33G+6DDwC0QN24g1vjVgq0xf2tLRHS52Frh45hRS0B2d3rTHy/SFw9ijBdq83R6q9EWyituDNYHPUX3kKNRnLUNEZN4UVnB0rYhGfWbgq+9P4ffrv+PU94H4bHQ71CjrnOk7iEqHAihmlCjbbga2XjiFHV8tQcCODVg0tCmqvuIF34Cj+PnU9wj4MgDfr1+Awc2rwNnW0Ftewal9SUDrN9HaPj16cstqRKMNBr1dAUl7R8BzVtplLAnt0d3YldAY7/m+ln5rOBERmTEFlDb2UDm7oYx7Gbg5O8HRzpIdfkspQ5WF0RRW9nB2c4OzkxrOri5wsrOEAhawcXJDmTJucFY7w83FCXbZdbe//zP+Fw14tGyM8i+Dj/D7pXiI1oPQ/dW/sOqrc+jeq36mxVKFYVvAHmi7jsGoqiy3iYiIzE2BFDP5dv8WbgoP9O/eKMMfVB5th3WDx8MdmNzvQ/zx/j4saGjgKuf9XVgVrEW3fv3hzFqGiIjI7BTaODNGSYrG0+da2LuWgSpDvaJPiMLz2GRYKhVQOjjDySZr7XX3izqotaAZ9oZvQHfHbM78AIhf0wQOY3+Dyt0N9iYUPT7f/4elbaXRnJ2cVBa+O6XRPGq8CJcODUclaTxHJzGlrC+2S8N51OTzSzg40sh3LOp1fByIDk0/xe/SeB6Z0o6P1nRAs3kmvqOlD3b/vRRtpPGccB1zZco6Fvm2yv0xV6a0ozlsq+awjvnaVl/zhursbjQrikHzioT+HGaUbYfNQ87i8fJWyKnv793Dn2DAxAuYumUF6mfol5M3tij7Wk2UyekNDND+exeh4YnScJ7YOldHtYoZOkPniRbPbofiP5PGvLKFe5VqeFVl5DsW9TomR+L+rX9g2iD8prVjcuR93PrHtHeEbVm8VrNMjttmFlzHXJi2jkW+rXJ/zIVp7WgO22pJW8cnT55gzpw5+Oyzz1CunGR0fRPX0dRtNSkpCfv3b0HkyT9Ra/1BjEt7jIe8i5lzU+H6f7sx/NJf8G+Sc9dffVIcomOS4OCsRi4DaxqggMJCYXzHMSGQYszHm4FCYQGF0W8IiJQUmPiOMllHAZEiZLOOUChgYfRKch1zVvTraNq2yv0xZ0W/juawrRbGOiYnJ2PkyJHw8vLCzJkzJdmiXUchBBIT45GSlAxLJ2fYpVXfRhYzz3Bo1jw8GbAS79U3qn4vHLc2Y/w2NWZ92gvlc65liIiIyESHDx9G//79cfv27WJ/jpMhRhYzAklxsUixUcG2JBQP+kTEaC3g6GBtfFVIREREeZKUlIShQ4eiYcOGBs7OFD8jixkiIiIyRyX57EzW24OIiIiIJN588010794d27ebeo9e4eGZGSIiIsqTknp2hmdmiIiIKE9enJ0JDg6WpooVz8wQERFRnkVHR8PKygp2dnbSVLH5f7KGfovsMO1eAAAAAElFTkSuQmCC"
+    }
+   },
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "To prepare the target state, we first need to define $U_{\\text{sin}}$ such that:\n",
+    "\n",
+    "$$\n",
+    "U_{\\text{sin}} |{x}\\rangle_n |{0}\\rangle_a = |{x}\\rangle_n (\\sin(x/N)|{0}\\rangle_a + \\cos(x/N)|{1}\\rangle_a)\n",
+    "$$\n",
+    "\n",
+    "where $n$ is the number of qubits used to represent the state, $a$ is the ancillary qubit, and $N=2^n$ is the number of possible states. \n",
+    "\n",
+    "![image-2.png](attachment:image-2.png)\n",
+    "\n",
+    "The circuit above shows $U_{\\text{sin}}$ (Fig. 1a in the paper). It is implemented as follows:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "@qfunc\n",
+    "def u_sin(x: QArray[QBit], a: QBit) -> None:\n",
+    "    repeat(\n",
+    "        count=x.len,\n",
+    "        iteration=lambda i: CRY(theta=2 ** (-x.len + i + 1), ctrl=x[i], target=a),\n",
+    "    )\n",
+    "    X(a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 2. Define $U_{\\tilde{f}}$ circuit"
+   ]
+  },
+  {
+   "attachments": {
+    "image.png": {
+     "image/png": "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"
+    }
+   },
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Then by combining the $U_{\\text{sin}}$ circuit with the QSVT technique, we can define the circuit $U_{\\tilde{f}}$ that applies the given function $f$ to the state $|{x}\\rangle_n$ such that\n",
+    "$$\n",
+    "U_{\\tilde{f}} |{+}\\rangle^{\\otimes{n}}|{000}\\rangle_a = c_{0} |{\\Psi_{\\tilde{f}}}\\rangle|{000}\\rangle_a + ...\n",
+    "$$\n",
+    "where $\\tilde{f}$ is the approximation of the function $f$, $|{\\Psi_{\\tilde{f}}}\\rangle$ is the state after applying the function, and $c_{0}$ is the coefficient of the desired state with $|{000}\\rangle_a$.\n",
+    "\n",
+    "![image.png](attachment:image.png)\n",
+    "\n",
+    "The circuit above shows $U_{\\tilde{f}}$ (Fig. 1b in the paper). \n",
+    "We will implement this circuit using the QSVT technique, which allows us to apply the function $f$ to the input block encoding circuit $U_{\\text{sin}}$."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "As shown in S2 in the paper, the function we seek to implement using QSVT is the scaled version of \n",
+    "$$\n",
+    "h(y) = f((b-a)\\arcsin(y)+a)\n",
+    "$$\n",
+    "over the domain $y \\in [0, \\sin(1)]$.\n",
+    "This is defined as `POLY_FUNC` in the code below."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def h(f, a, b):\n",
+    "    \"\"\"\n",
+    "    Eq. (3) in https://arxiv.org/pdf/2210.14892\n",
+    "    \"\"\"\n",
+    "    return lambda y: f((b - a) * np.arcsin(y) + a)\n",
+    "\n",
+    "\n",
+    "def h_hat(h, h_max):\n",
+    "    \"\"\"\n",
+    "    Eq. (4) in https://arxiv.org/pdf/2210.14892\n",
+    "\n",
+    "    The scaled version of the function h(y).\n",
+    "    \"\"\"\n",
+    "    return lambda y: h(y) / h_max\n",
+    "\n",
+    "\n",
+    "# Scaled function definition following the paper\n",
+    "H_FUNC = h(f=F, a=MIN_X, b=MAX_X)\n",
+    "POLY_FUNC = h_hat(h=H_FUNC, h_max=F(0))  # maximum value of the Gaussian is at x=0"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Since `POLY_FUNC` does not have a defnite parity, we should use QSVT for mixed parity version.\n",
+    "To do this, we first split the function into even and odd parts."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Even and odd part of the function for the mixed parity QSVT\n",
+    "POLY_EVEN = lambda x: (POLY_FUNC(x) + POLY_FUNC(-x))\n",
+    "POLY_ODD = lambda x: (POLY_FUNC(x) - POLY_FUNC(-x))\n",
+    "\n",
+    "# Parameter of the QSVT\n",
+    "POLY_DEGREE = 25\n",
+    "POLY_MAX_SCALE = 1"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Then we can find the phase angles of even and odd parts for QSVT using the `pyqsp` library.\n",
+    "The angles are then used to construct the QSVT circuit.\n",
+    "\n",
+    "Here we use `POLY_DEGREE+3` and `POLY_DEGREE+2` for even and odd parts respectively, because it is sufficient to approximate the function (see Appendix A)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[PolyTaylorSeries] (Cheb) max 1.0000002010996418 is at 0.47942527263309914: normalizing\n",
+      "[PolyTaylorSeries] (Cheb) average error = 2.3092589728477082e-07 in the domain [-1, 1] using degree 28\n",
+      "[PolyTaylorSeries] (Cheb) max 1.0000011023789412 is at -0.47942595340330507: normalizing\n",
+      "[PolyTaylorSeries] (Cheb) average error = 6.79904715625726e-07 in the domain [-1, 1] using degree 27\n"
+     ]
+    }
+   ],
+   "source": [
+    "def adjust_qsvt_conventions(phases: np.ndarray, degree: int) -> np.ndarray:\n",
+    "    phases = np.array(phases)\n",
+    "    phases = phases - np.pi / 2\n",
+    "    phases[0] = phases[0] + np.pi / 4\n",
+    "    phases[-1] = phases[-1] + np.pi / 2 + (2 * degree - 1) * np.pi / 4\n",
+    "\n",
+    "    # verify conventions. minus is due to exp(-i*phi*z) in qsvt in comparison to qsp\n",
+    "    return -2 * phases\n",
+    "\n",
+    "\n",
+    "def compute_qsvt_phases(poly, degree, max_scale):\n",
+    "    chebyshev_poly = PolyTaylorSeries().taylor_series(\n",
+    "        func=poly,\n",
+    "        degree=degree,\n",
+    "        max_scale=max_scale,\n",
+    "        chebyshev_basis=True,\n",
+    "        cheb_samples=degree,\n",
+    "    )\n",
+    "    phases = QuantumSignalProcessingPhases(\n",
+    "        chebyshev_poly, signal_operator=\"Wx\", method=\"laurent\", measurement=\"x\"\n",
+    "    )\n",
+    "    return adjust_qsvt_conventions(phases, degree).tolist()\n",
+    "\n",
+    "\n",
+    "# Compute the phase angles for the even and odd parts of the function\n",
+    "phiset_even = compute_qsvt_phases(POLY_EVEN, POLY_DEGREE + 3, POLY_MAX_SCALE)\n",
+    "phiset_odd = compute_qsvt_phases(POLY_ODD, POLY_DEGREE + 2, POLY_MAX_SCALE)\n",
+    "\n",
+    "# Match the length of the phase angles for even and odd parts by adding dummy value\n",
+    "if len(phiset_even) - 1 == len(phiset_odd):\n",
+    "    phiset_odd = np.append(phiset_odd, [0])\n",
+    "assert len(phiset_even) == len(phiset_odd)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Now we are ready to construct $U_{\\tilde{f}}$ circuit.\n",
+    "The code below implements the $U_{\\tilde{f}}$ circuit using `qsvt_lcu` function from classiq library, which allows us to apply the mixed parity QSVT circuit to the input block encoding circuit $U_{\\text{sin}}$."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "class MyQStruct(QStruct):\n",
+    "    x: QNum[NUM_QUBITS, UNSIGNED, NUM_QUBITS]  # Representation of the input x\n",
+    "    a1: QBit  # Auxiliary qubit for block encodinf of u_sin\n",
+    "    a2: QBit  # Auxiliary qubit for the QSVT\n",
+    "    a3: QBit  # Auxiliary qubit for mixed parity (NOTE: It is unnecessary if f^{\\tilde} has definite parity)\n",
+    "\n",
+    "\n",
+    "@qfunc\n",
+    "def projector_cnot(reg: QNum, aux: QBit) -> None:\n",
+    "    aux ^= reg == 0\n",
+    "\n",
+    "\n",
+    "@qfunc\n",
+    "def u_f(reg: MyQStruct):\n",
+    "    \"\"\"u_{f^{\\tilde}} circuit for state preparation using QET (more generally, QSVT)\"\"\"\n",
+    "    within_apply(\n",
+    "        lambda: H(reg.a3),\n",
+    "        lambda: qsvt_lcu(\n",
+    "            phase_seq_even=phiset_odd,\n",
+    "            phase_seq_odd=phiset_even,\n",
+    "            proj_cnot_1=lambda _reg, aux: projector_cnot(\n",
+    "                _reg[0], aux\n",
+    "            ),  # a1=0 representing \"from state\". If the state is \"from state\", then mark aux qubit as |1>\n",
+    "            proj_cnot_2=lambda _reg, aux: projector_cnot(\n",
+    "                _reg[0], aux\n",
+    "            ),  # a1=0 representing \"to state\". If the state is \"to state\", then mark aux qubit as |1>\n",
+    "            u=lambda _reg: u_sin(_reg[1 : _reg.len], _reg[0]),  # \"x\" and \"a1\"\n",
+    "            qvar=[reg.a1, reg.x],\n",
+    "            aux=reg.a2,\n",
+    "            lcu=reg.a3,\n",
+    "        ),\n",
+    "    )\n",
+    "    H(reg.a3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## 3. Define $U_{\\text{amp}}$ circuit"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "The final step is to define $U_\\text{amp}$ by attaching the amplitude amplification technique to the $U_{\\tilde{f}}$ circuit.\n",
+    "$U_\\text{amp}$ amplifies $c_{0}$, the coefficient of the target state $|{\\Psi_{\\tilde{f}}}\\rangle$, to increase the probability of measuring the target state and discard the other states as follows:\n",
+    "\n",
+    "$$\n",
+    "c_{0} |{\\Psi_{\\tilde{f}}}\\rangle{000}_a + c_{1}|{\\cdot}\\rangle|{001}\\rangle_a + ... \\rightarrow |{\\Psi_{\\tilde{f}}}\\rangle|{000}\\rangle_a\n",
+    "$$"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "To do this, we can use `exact_amplitude_amplification` from Classiq library, which allows us to apply the amplitude amplification technique to the input circuit $U_{\\tilde{f}}$.\n",
+    "We explicitly compute the amplitude $c_0$ for the Gaussian function using the formula in the paper, adapted for the Gaussian case. To account for the factor of $\\sqrt{2}$ introduced by the LCU in the two QSVT blocks, we multiply by an additional $1/\\sqrt{2}$ factor."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "amplitude before amplification:  0.3957958358303603\n"
+     ]
+    }
+   ],
+   "source": [
+    "def squared_gaussian_integral(a, b, mean=0.0, sigma=1.0):\n",
+    "    \"\"\"\n",
+    "    Computes the integral of f(x)^2 from a to b,\n",
+    "    where f(x) is the Gaussian PDF with mean=0 and std=sigma.\n",
+    "    \"\"\"\n",
+    "    prefactor = 1 / (2 * np.pi * sigma**2)\n",
+    "\n",
+    "    def integrand(x):\n",
+    "        return prefactor * np.exp(-((x - mean) ** 2) / sigma**2)\n",
+    "\n",
+    "    result, _ = quad(integrand, a, b)\n",
+    "    return result\n",
+    "\n",
+    "\n",
+    "def gaussian_max(a, b, mean=0.0, sigma=1.0):\n",
+    "    x1 = a\n",
+    "    x2 = b\n",
+    "    x3 = 0\n",
+    "    if a < mean and b > mean:\n",
+    "        x3 = mean\n",
+    "    else:\n",
+    "        x3 = a\n",
+    "    X = np.array([x1, x2, x3])\n",
+    "    return max(norm.pdf(X, mean, sigma))\n",
+    "\n",
+    "\n",
+    "def get_gaussian_amplitude(a, b, mean=0.0, sigma=1.0):\n",
+    "    Numerator = np.sqrt(squared_gaussian_integral(a, b, mean, sigma))\n",
+    "    Denominator = np.sqrt((b - a)) * gaussian_max(a, b, mean, sigma)\n",
+    "    return Numerator / Denominator\n",
+    "\n",
+    "\n",
+    "amp = get_gaussian_amplitude(\n",
+    "    MIN_X, MAX_X, mean=0.0, sigma=1.0 / np.sqrt(2 * EXP_RATE)\n",
+    ") / np.sqrt(2)\n",
+    "print(\"amplitude before amplification: \", amp)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Now we are ready to construct $U_{\\text{amp}}$ circuit.\n",
+    "The code below implements the $U_{\\text{amp}}$ circuit using `exact_amplitude_amplification` function, where\n",
+    "- `state_prep` is the circuit that prepares the initial state before amplitude amplification.\n",
+    "- `reflect_about_zero` is the circuit that marks the target state $|{\\Psi_{\\tilde{f}}}\\rangle$ to be amplified."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "@qfunc\n",
+    "def state_prep(reg: MyQStruct):\n",
+    "    hadamard_transform(reg.x)\n",
+    "    u_f(reg)\n",
+    "\n",
+    "\n",
+    "@qfunc\n",
+    "def u_amp(reg: MyQStruct):\n",
+    "    \"\"\"Amplitude amplification circuit for state preparation using QET (more generally, QSVT)\"\"\"\n",
+    "    exact_amplitude_amplification(\n",
+    "        amplitude=amp,\n",
+    "        oracle=lambda r: reflect_about_zero(\n",
+    "            r[reg.x.size : r.len]\n",
+    "        ),  # Mark if the state is good state. Auxiliary qubits are |0> => good state\n",
+    "        space_transform=lambda _reg: state_prep(_reg),\n",
+    "        packed_qvars=[reg.x, reg.a1, reg.a2, reg.a3],\n",
+    "    )"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Check the result"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We simulate the circuit and check if the Gaussian state is prepared correctly."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Quantum program link: https://platform.classiq.io/circuit/2xJrZNK8dEm4qdpsIErswcg7RRp?login=True&version=0.80.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "@qfunc\n",
+    "def main(\n",
+    "    x: Output[QNum],\n",
+    "    a1: Output[QBit],\n",
+    "    a2: Output[QBit],\n",
+    "    a3: Output[QBit],\n",
+    "):\n",
+    "    allocate(NUM_QUBITS, x)\n",
+    "    allocate(1, a1)\n",
+    "    allocate(1, a2)\n",
+    "    allocate(1, a3)\n",
+    "    reg = MyQStruct()\n",
+    "    within_apply(\n",
+    "        lambda: bind([x, a1, a2, a3], reg),\n",
+    "        lambda: u_amp(reg),\n",
+    "    )\n",
+    "\n",
+    "\n",
+    "qmod = create_model(\n",
+    "    main,\n",
+    "    execution_preferences=ExecutionPreferences(\n",
+    "        num_shots=1,\n",
+    "        backend_preferences=ClassiqBackendPreferences(\n",
+    "            backend_name=\"simulator_statevector\"\n",
+    "        ),\n",
+    "    ),\n",
+    "    preferences=Preferences(timeout_seconds=1800),\n",
+    ")\n",
+    "write_qmod(qmod, \"stateprep_guassian_using_qsvt\")\n",
+    "qprog = synthesize(qmod)\n",
+    "show(qprog)\n",
+    "result = execute(qprog).result_value()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Mean Squared Error (MSE): 1.503555076018583e-11\n",
+      "{'depth': 6379, 'width': 16, 'cx_count': 3382}\n"
+     ]
+    }
+   ],
+   "source": [
+    "from numpy import zeros_like\n",
+    "\n",
+    "\n",
+    "def get_metrics(qprog):\n",
+    "    \"\"\"\n",
+    "    Extract circuit metrics from a quantum program.\n",
+    "\n",
+    "    Parameters:\n",
+    "        qprog: The quantum program object.\n",
+    "\n",
+    "    Returns:\n",
+    "        dict: A dictionary containing the circuit metrics:\n",
+    "              - \"depth\": Circuit depth.\n",
+    "              - \"width\": Circuit width (number of qubits used).\n",
+    "              - \"cx_count\": Number of CX gates (returns 0 if none are present).\n",
+    "    \"\"\"\n",
+    "    # Generate the optimized quantum circuit\n",
+    "    circuit = QuantumProgram.from_qprog(qprog)\n",
+    "\n",
+    "    # Extract metrics\n",
+    "    metrics = {\n",
+    "        \"depth\": circuit.transpiled_circuit.depth,\n",
+    "        \"width\": circuit.data.width,\n",
+    "        \"cx_count\": circuit.transpiled_circuit.count_ops.get(\n",
+    "            \"cx\", 0\n",
+    "        ),  # Default to 0 if 'cx' not found\n",
+    "    }\n",
+    "\n",
+    "    return metrics\n",
+    "\n",
+    "\n",
+    "def normalize(list):\n",
+    "    return list / np.sum(list)\n",
+    "\n",
+    "\n",
+    "def amp_to_prob(amplitude):\n",
+    "    return (np.linalg.norm(amplitude)) ** 2\n",
+    "\n",
+    "\n",
+    "def parse_qsvt_results(result) -> Dict:\n",
+    "    amps: Dict = {x: [] for x in range(2**NUM_QUBITS)}\n",
+    "\n",
+    "    for parsed_state in result.parsed_state_vector:\n",
+    "        if (\n",
+    "            parsed_state[\"a1\"] == 0\n",
+    "            and parsed_state[\"a2\"] == 0\n",
+    "            and parsed_state[\"a3\"] == 0\n",
+    "            and np.linalg.norm(parsed_state.amplitude) > 1e-10\n",
+    "        ):\n",
+    "            amps[parsed_state[\"x\"]].append(parsed_state.amplitude)\n",
+    "    simulated_prob = [amp_to_prob(amp) for amp in amps.values()]\n",
+    "    return simulated_prob\n",
+    "\n",
+    "\n",
+    "x = np.linspace(MIN_X, MAX_X, 2**NUM_QUBITS)\n",
+    "simulated = parse_qsvt_results(result)\n",
+    "expected = normalize(\n",
+    "    [\n",
+    "        amp_to_prob(F(((MAX_X - MIN_X) * x / 2**NUM_QUBITS) + MIN_X))\n",
+    "        for x in range(2**NUM_QUBITS)\n",
+    "    ]\n",
+    ")\n",
+    "# Assert that the probabilities sum to 1\n",
+    "assert np.isclose(\n",
+    "    sum(simulated), 1.0, atol=1e-2\n",
+    "), \"Simulated probabilities do not sum to 1. {}\".format(sum(simulated))\n",
+    "assert np.isclose(\n",
+    "    sum(expected), 1.0, atol=1e-2\n",
+    "), \"Expected probabilities do not sum to 1. {}\".format(sum(expected))\n",
+    "plt.plot(x, expected, label=\"expected\")\n",
+    "plt.scatter(x, simulated, label=\"simulated\", marker=\"x\", color=\"red\", s=8)\n",
+    "plt.legend()\n",
+    "plt.show()\n",
+    "\n",
+    "# Calculate MSE between simulated and expected probabilities\n",
+    "mse = np.mean((np.array(simulated) - np.array(expected)) ** 2)\n",
+    "print(\"Mean Squared Error (MSE):\", mse)\n",
+    "\n",
+    "# Print circuit metrics\n",
+    "print(get_metrics(qprog))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Appendix A: Compute QSVT Phase Angles"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "This section details the process of computing QSVT phase angles for even and odd polynomials using the `pyqsp` library."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Finding phase angles for the even polynomial"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Get Chebychev coefficients for the even parts of the polynomial"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[PolyTaylorSeries] (Cheb) max 1.0000002010996418 is at 0.47942527263309914: normalizing\n",
+      "[PolyTaylorSeries] (Cheb) average error = 2.3092589728477082e-07 in the domain [-1, 1] using degree 28\n"
+     ]
+    }
+   ],
+   "source": [
+    "poly_even = PolyTaylorSeries().taylor_series(\n",
+    "    func=POLY_EVEN,\n",
+    "    degree=POLY_DEGREE + 3,\n",
+    "    max_scale=POLY_MAX_SCALE,\n",
+    "    chebyshev_basis=True,\n",
+    "    cheb_samples=(POLY_DEGREE + 3),\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Compute phase angles"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[-1.5707638052650055, -1.739611231665883e-05, 3.4974273703358705e-05, 6.19730257889195e-06, -0.0006122100531238406, 0.002279801990280106, -0.0014437937270845858, -0.013232527724066134, 0.04175526063108914, -0.030699079504687754, -0.09369728174206715, 0.24876290976132331, -0.1643884044848707, -0.2162590324006175, 0.4550058564651067, -0.21625903240061262, -0.16438840448487468, 0.24876290976132331, -0.09369728174206471, -0.030699079504689974, 0.04175526063108914, -0.013232527724065468, -0.0014437937270850298, 0.002279801990280106, -0.0006122100531236185, 6.197302579113995e-06, 3.4974273702914616e-05, -1.739611231621474e-05, 3.252152989130508e-05]\n",
+      "len(phiset_even): 29\n"
+     ]
+    }
+   ],
+   "source": [
+    "(phiset_even) = angle_sequence.QuantumSignalProcessingPhases(\n",
+    "    poly_even, signal_operator=\"Wx\", method=\"laurent\", measurement=\"x\"\n",
+    ")\n",
+    "print(phiset_even)\n",
+    "print(\"len(phiset_even):\", len(phiset_even))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Plot"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAHACAYAAACyDu7BAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAb8lJREFUeJzt3Qd4FFXXwPGLYkEUsCu+ih0LoGBBFBUFxY5d7KCCvStiQ8WKvXdF7BXsYkEsKKJiwYLYsCsqCCp23O/53/ed/TYhCZOQZLO7/9/zLMkum2Qy2Z05c+655zbKZDKZIEmSJKlKc1T935IkSZJg4CxJkiSlYOAsSZIkpWDgLEmSJKVg4CxJkiSlYOAsSZIkpWDgLEmSJKVg4CxJkiSlYOA8C6wP8/PPP8ePkiRJKl0GzrPwyy+/hObNm8ePkiRJKl0GzpIkSVIKBs6SJElSCgbOkiRJUgoGzpIkSVIKBs6SJElSCo3TPEmSJBUfWq3+888/YcaMGfneFKlKc845Z2jcuHFo1KhRyCcDZ0mSStBff/0Vvv322/Dbb7/le1OkVOabb76w5JJLhrnnnjvki4GzJEkl5t9//w0TJ06MWbyWLVvGQCTfmTypqpERLvR++OGH+LpdaaWVwhxz5Kfa2MBZkqQSQxBC8Lz00kvHLJ7U0DVp0iTMNddc4fPPP4+v33nnnTcv2+HkQEmSSlS+snZSob5e878FkiRJUgEwcJYkSZJSMHCWJEkqEKeffnpYc801QyHo1atX2H777VM//7PPPouTVN96663QUBk4S5KkgtGlS5dw1FFHhYakIW5TQ3DZZZeFW265JRQTu2pIklTiaPeV737OdPeoz5Z4dGbIZz/gUtC8efNQbAycJUkqcQTNF1xwQV634fjjjw9Nmzad5dD/888/H29kM0FfX9rq9e3bNzz77LPhu+++C8sss0w45JBDwpFHHlnma6dOnRrWWWedcNVVV4V55pknfu3LL78cn/vBBx+ENm3ahFNOOSXssMMO4c0338yWRLz77rtx+1588cW4jZtvvnm45JJLwiKLLFLpNi277LIzbT+P7b///uH9998PDz/8cGjRokU46aSTwqGHHpp9zhdffBEOP/zwMGLEiNhFYosttghXXHFFWHzxxWf6fi+88ELo2rVr+PLLL8MSSyyRfZzs99ixY+P2kvHl/j333BM/8tzOnTuHwYMHx8VEQGvCs846K1x//fWxV/Kqq64azjvvvPizkxKK5ZZbLn4PtuX111+P++qOO+4I06ZNCwcffHDcfxtuuGG49dZbw6KLLlpmnz/44IPx/vDhw+PPYX/SQ7xTp05xn62wwgqhUFiqIUmSCgJBFsFWnz594qqH3AiaCfz+85//hPvuuy8GpQMGDIgB6b333lvm6wlGJ0yYEJ5++unw6KOPhp9//jlsu+22oW3btuGNN94IZ555ZjjhhBPKfA2B36abbhrat28fA0aCv0mTJoVdd921ym2qDBcoa6yxRgzM+/fvH4N7tgf8Hj169AhTpkyJgTiPf/rpp2G33Xar8HtttNFGYfnllw+33XZb9rG///47BrT77bdfmQujCy+8MD6PYJvg/LjjjiuzXy+66KL4nHHjxoXu3buH7bbbLnz00Udlft5pp50WLyzYVyx/vccee4R+/frFrydI//jjj+O+r8z06dPDMcccE/djcmHARQq/d6Ew4yxJkgpm6J/yCso6cjOsZC/POOOM7H2yo6NHj46BcxLggmzxjTfemC3RuPbaa2N5yA033BAX1FhttdXC119/HYPgxJVXXhmD5nPOOSf72M033xyD4w8//DCsvPLKFW5TZTbYYIMYMIOvfemll2L2erPNNovB5DvvvJPNooMM7uqrrx5ee+21mC0vjww22WMy4njkkUfCH3/8Ueb3Jpjmd00yu4cddlgYOHBg9v8JmLlg6NmzZ7w/aNCgMHLkyHDppZfG7HziuOOOi0E1CPh33333uM38Tsm2VFXTvNNOO5W5z34kO83FDhnsQmDGWZIkFTwCvLXWWisGYvPPP38sOyCzmovMcm5dM9nndu3alVmFbt111y3zNW+//XYMIvmeyW2VVVaJ//fJJ59UezvJTpe/P378+Pg5HwmYczPWBPOUdCTPKY9yCDK9r7zySrxP4ErQnFv2QlCfWw5Bicb3338fPyfr/s0332SD3wT3y//Mdu3aZT9PSkfYp7mPJd+3ImSwCbbJkjdr1ixbzlL+79SQmXGWJKnEEVglGct8bkNN3X333TEbSrkBgegCCywQSyLGjBlT5nmzqqGuyK+//hrLOcjClpfUCOfTYostFrePrDOZ9ieeeCI899xzZZ7DUtW5yLIzIbS65sr5PslEzvKPVVV2wXa2atUqZvhbtmwZn0ummYmahcLAWZKkEkfAU5OgMh/IGM+YMaPMY5Q7rL/++nGSXyJNNrh169bh9ttvD3/++WecLAhKInJ16NAhPPDAAzE7Sl1v2m2qTJIZzr3PZDzwkcl73JKsM2UM1FmTea7MAQccEDO51HmTWS6fPa4KmV+CWPbhxhtvnH2c++Wz77Nj8uTJMcNP0MwkQowaNSoUGks1JElSwSCAJZNMp4cff/wxZi1XWmmlOOHsySefjHXHp5566kwBcEWY3MbX05GDsgS+nnrf3IwqHS+YrEdgyvckIOd5vXv3zgbLFW1TZQhIzz///LidlJcwoTHp/tGtW7dY+rDnnnvGCXivvvpq2GeffWJAu/baa1f6Pak7JgCmYwXbVV2MNpBRp2sGwS012CxCktuVZHYtuOCCYeGFF44lNJSW0AGFiYKFxsBZkiQVDEoymAxIBpZ6ZupjDzzwwLDjjjvG7hMdO3aM2c3c7HNlCDaZTEeQSOu5k08+OdsVIql7TrKxBMm0oSOwpa0bdcd0hahsmypz7LHHxiCfCYcEuhdffHF2wh3B+kMPPRSDTDpmEEhTD0xAWxW2g1pntpFAu7qOOOKIGMSybfx+dA6hXR4XJLVljjnmiCU1tMmjPOPoo4/OewvEmmiUqUmRSwmhaJ5ZvPQp5A0mSVKho+sCnRuoic2dGKcQW7mRteW836RJk1r93mSmCbrrYpVBOlrQg5mAt1j90QBet9Y4S5KkkkW7N7K6Sy21VOygQVs2ulLUdtBcVwjwaWF35513FnXQ3FAYOEuSpJLFSoOUZ/CRLhm77LJLOPvss0OhYMEUaqEPOuig2AtadctSjVmwVEOSVGwawpC3VIivWycHSpIkSSkYOEuSJEkpGDhLkiRJKRg4S5IkSSkYOEuSJEkpGDhLkiTVg99++y3stNNOsUsXqwROnTo1b9vy3HPP5X0bClFBBc4vvPBC2HbbbePyl/yxH3zwwVQvjA4dOoR55pknrLjiiuGWW26pl22VJEm1r0uXLnWy8l59bNOQIUPCiy++GF5++eXw7bffxna3+dq+9ddfv163oVgUVOA8ffr0sMYaa4Srrroq1fPp9bf11luHTTbZJK5Dz4vmgAMOCE8++WSdb6skSWq4/vrrr3r/mZ988klYddVVQ5s2bcISSywRk4D5Mvfcc+d9GwpSpkCx6cOGDavyOf369cusvvrqZR7bbbfdMt27d0/9c6ZNmxZ/Fh+luvbvv/9mvvvuu8wrr7wSX9833XRTfM3utNNOmT322CNzyCGHZM4+++zMQw89lPnhhx/yvbmSCtTvv/+eef/99+PH8n799dcqb1OnTs18//33ma+//jrz2WefZT799NPMe++9l3nnnXcyH374Yearr77K/Pjjj5k//vijzPedPn16hd+vOvbdd994Ts69TZw4MfPPP/9k9ttvv8yyyy6bmXfeeTMrr7xy5tJLL53pa3v06JE566yzMksuuWR8Ll566aXMGmuskZlnnnkya621Vjz28n3ffPPN7Nfyu22xxRaZpk2bZhZbbLHMXnvtlT0GV7ZN5W288cZlnsP9yuKZ5s2bZwYPHhw/53vxnAceeCDTpUuXTJMmTTLt2rXLvPzyy2W+ZtSoUfF78v8tWrTIbL755pkpU6ZUun0jR46Mn//000/Z73H//fdnVltttczcc8+dadWqVebCCy8s8zNatWoVz0G9e/fOzD///Jmll146c91112Uawuu2vhT1ktujR48O3bp1K/NY9+7dqxxO+fPPP+Mtd+VAqT5GU15//fXw9ttvhy+//DKOlnz99dfhp59+isvAzpgxIzRu3DhmCOabb744tMaNzAWvaUZW+D9Jml0XXHDBTI/9+++/4Z9//gl///13PB4lNx4n9uMjNtxww9CuXbsw55xzxhvHJep5F1xwwXDllVfGGt/yTj/99NTbdtlll4UPP/wwZmwHDhwYH1t00UXjz//Pf/4T7rvvvrDwwgvHUoi+ffvGJbR33XXX7NePGDEibs/TTz+dPcdTArrVVluFO++8M3z++eczxQjUAG+66aZxxPqSSy4Jv//+ezjhhBPi93322Wcr3abyhg4dGvr37x/efffd+Hl1j9knn3xyuPDCC8NKK60UP999993Dxx9/HM8NjKp37do17LfffnF7eGzkyJHxb1TZ9n322Wdlvv/YsWPj78TfY7fddov78JBDDon7s1evXtnnXXTRReHMM88MJ510Urj//vvDwQcfHDbeeOPQunXrUAqKOnAm4Fh88cXLPMZ93ii88Js0aTLT15x77rnhjDPOqMetVCmbPHlyuP766+Pr8f333w9vvPFGPJj9NwlRNU5KHAxfe+21WDe38847h549e8YDpiTVBgJSgt0koUQgRgBdGf4/twSC4xHHtylTpoRff/01lgXM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xzaU79cpqXSw8Ad1scl5LZkMSJaZ40R9IGhPykSSoJmaaso2yDzXx3FSheUPSzWk4kN9MRllVlziZMDBn2CVVnP1FTSDTA6ztck6c1JkZSyGRamDZqUnLgjNPEulh+4KTA4j+ADHh2RVOY4L9YVjIUFycqHP8SlZCIoMNFnp2urzLNUWL+ekWs6gMEOblk7U8IFVnTp37hxOOeWUvGRQ+Nn0N6WVFJlvykYoH2Eo0m4bUumNhtHl54knnihT01zfQXP54JnMd7IyH8EzdddJByKpITFwlmrRc889F9sWJb3GmQRD9wx6LddnzV559HzeZpttYoshTlQMj7777rux12nS51NScaNl6/333x/bVDIaRjaXXvLU9eYjaC4fPDM6lhwnyTiTgU4mDUoNhYGzVEtoGE8WhxMTmefVV189toE7//zzq92Tsy5OTGS8N9lkk5h5BtkcyklonF/R8q6Sigdt4OjPS6cfRsSSHs1kevMZNCcImBdbbLFYt8rximw49axc2Cdt66SGwMBZqqVJpEOHDg0PP/xwHGZkYgvdM1iNipNBQ0Ad4znnnBOX9E5qG1kkhdWmyIhLKk5007nvvvvCM888E1enI9PMQmAEqfm+qM9FIE9HjaQNXNIFiJaa1VmJT6pLBs7SbCIzQsD8wgsvxKwzAWpSGsFqUA0JJ8pzzz03u3oU207W+fHHH491j5KKzwUXXBA76wwfPjze79q1a1xdjwC1oU2+ow0eWfCkYwK958mW01JTaggMnKXZxGIjzz//fFzuFJtttlnsZsGJqSGinvG0006LwTMrg1GmwYQhFmr56KOP8r15kmoR5WNc2L/44osxa8tk5S222CLeGlrQnGCiIkF9shAKWefcjhu1MReF350bI4O1hV75NWnlx1wTRifTonyFkUxKbnKxNHbye9GGVHXDwFmaDfSTvOyyy2LtIMOKK620Uszm0HquoZ6UwITFgw8+ONZhJ502yJaffvrp2cUQJBW2L7/8Mh6fPvjgg3iBzIVyy5Ytww477BA/b6gYtSN4pg6b42hS78y8DI6zuQEiwTWlZ/369av2sWvChAkx2E3kfl8mKq644opxhdd//vkn1BV+J/5GJ598cuqvoRRwn332iQmQXHwfJoCqbhk4SzVE9oaWbp988knMhHAAp1/zdtttVxBLte62225x6W8WQUhOsrSnY1hX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DSEgqQ+0+bvppptiuR7ZZjr/3HnnnXGhGSkNJweqJAwfPjwGbkwGAb2be/bsme/NKplFUegSQH0hiwFQsvH000/ne7OkvCG7yzLLHJPIPFNjSwvHvn375nvTih515D169IjnAHz77bdh3LhxcWlsKQ0DZxU9atlYuSnJNjMsSXanS5cu+d60ksDw8/HHHx9XZ8RLL70Ue2gzWVAqRRyPPvzww2xtMUtA77777nGFO9W9XXbZJSy11FLxYp7zA3MwbrvttnxvlgqEgbNKom8zdba0fQJDoUxQq+tZ6/p/9KSlbIMsD9m2Z599Njz11FMuiqKSQ4kApQFJ+znmWqy88sqOgNUjOohQspFknb/++uvwwQcfZEckpaoYOajocZLiwAg6aBA4b7fddvnerJJbuatr167ZZc3feuutWN/59ttv53vTpHp13XXXxVp/Amgu3inRoEVjqdQYNxR77LFH7JlNEM3FPBfxr776ar43SwXAwFlFjZnTBGjUsYGgmTZp+WyeXqqYiMkywm3atIn3yTg/88wzse5ZKgV00MhticnxiNZzlo3VP0r26JedTApkYazXXnvNRZo0SwbOKmq33357zDaTTaCejW4au+22W743qySRXSPjTOaZ7BpZt4ceeii2hpJKwRVXXBGDZ4Izln+mbzOTZ5UfXLBwMc+CTfR3ZpIg8y+kqhg4q2jR5omltZn4kWR3Nt988xhAKz+YBLXmmmuGVVZZJd5/4403wqOPPpptySUVKwJmjkVffPFFvE+nGS4iW7dune9NK1kLLbRQHAlbe+21s1ln5sTQok6qjIGzihazpDlRUb9GRoFJOHvttVe+N6vkrbvuurHWnHIZVvAioGAhCKlY0XKO0qSPPvoo9pTn9U9tMwsEKb/WX3/90LFjxzgKxgX8+++/H9555518b5YaMANnFSVmR7PAQNKCjtnTG220UaxrU36tttpqscsGgQMInF988cVYiy4VI3oE8/oeO3ZsvM/k5JNPPtlFgBoA2tIx74IVBJN2mQ8//LAdf1QpA2cVpfvvvz/WNlNLSMN7apv33nvvfG+W/odJOdR3MqOdYVGGr1mK25OVig0jXkyCZdEfMs+UKTEhkEynGgZWNyXrDPprUz7G30yqiIGzig6BGBM9WNYZtByiho36WjUMiy++eNh+++2zfxMuchgeZYVHqZhQM0um+eOP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SSedFLbccst4Yp5zzjlDqe0zAjouSNu1axcvXi+88MJ4zCd4/s9//uNrLcVrjRrcd999N54zcxXza60mKjuukUT6/fffw08//TTb7/miDpz79+8fBg0aVOVzxo8fHyfHqPr7bXbxIr7zzjvDqaeeOtP/5T7Wvn37MH369HDBBRc02GCmrvdZbrBHZpkJNF27do0HyhVWWCEUqvp6rXHQZELNaqutFk4//fSCfq2p4TjvvPPiRFIyfrmT3cgK5r5fCRh5n/I83relplOnTvGWIGgmYXLdddfFi1nNGgEzryVGxXL5Wsufogycjz322DjjtCrLL798jb73EkssET9OmjQpBjEJ7q+55prZ53z//fdlvo4uB8z2T76+kPfb7P5+999/fxzm3GeffWb5XIbsOMD++eefdb7+fEPeZ7n7Ax9//HE8SPK15WcF81pEqb/Wfvnll5iVWWCBBcKwYcPCXHPNVdCvtYpQZkJ2KfmbJ7hf2f7h8aqen+YYV+hqst8SZE0JnJ955pkYrMzqNczP4v1a6MHM7OyzBO9BLlLZH/C1VvV+42KeCzRGx2almF5rNVHZcY0SPbq18DeY3ddvVrUqootYdScHXnjhhdnH6HJQ0eTA119/PfucJ598sugmB9b092PCW/kOB5U566yzMgsuuGCm0NXWa2LUqFHx+zD7PHdyYO6s4Ouuuy5ODvzjjz8ypbrfeE+ut9568bU2ffr0on6tMeHlsMMOKzPhZamllqpycuA222xT5rFOnTrNNDmwqmNcMajufsOgQYPie2v06NGpfsaXX34ZX6sPPfRQplT3WfkJla1bt84cffTR8b6vtXNnGZewL3788ceSe63VZHIgHaZy0X2p/OTA2Xn9ZrcnU+I+//zz2F4oaY3G59xyW6TxRqclSm77HFqY8AIdN25cnNlaUTu69u3bZ8aMGRODHdphFVs7uqp+P1o0sd/4/1wfffRRfHPTGaE82ofdcMMNsS0Wz7v66qtjexlaBpbiPqOV2sCBA2PQOHHixPh6W3755TMbbbTRTO3oNt9888xbb70VW+8suuiiRdeOrjr7jRMvXSLatm0b92Fuuyb2V7G91mixxMn1lltuiRcaffv2jcenpNPK3nvvnenfv3+ZdnSNGzeOwQpt1U477bQK29HN6hhX6Kq739gndGa5//77y7ymknMFH4877rgYVPN+feaZZzIdOnSIr9diuIityT7jvMqF7ieffJIZO3ZspmfPnpl55503tgJL+Fqbeb8lOnfuHDtDlFcKr7VffvklG48RONM2mM+J2cD+Yr+Vb0d3/PHHx+MarSMrakdX1d8hrZIPnGnpwh+l/G3kyJEz9XtNcJV86qmnZhZffPH4R+jatWtmwoQJM/Vh5OROME6Gonfv3mWC8UI3q9+PN3P5/QgCuqWXXjpe6ZVHME2LOr5n06ZNY+/ea6+9tsLnlsI+++KLL2KQvNBCC8XXGf2LOSjk9nHGZ599ltlyyy0zTZo0iT2cjz322DJt10ptv/Gxovc0N55bjK81epYus8wyMbAjq0LP6wRZd45z5dvzrbzyyvH5tHB67LHHyvx/mmNcMajOfmvVqlWFrykuPPDbb7/FC1guXLkQ4fn0ia3uSbmY9tlRRx2VfS6vpa222irzxhtvlPl+vtYqfo9+8MEH8fX11FNPzfS9SuG1NrKS43iyn/jIfiv/NRzX2cckmXLjtjR/h7Qa8U+NCkokSZKkEmIfZ0mSJCkFA2dJkiQpBQNnSZIkKQUDZ0mSJCkFA2dJkiQpBQNnSZIkKQUDZ0mSJCkFA2dJkiQpBQNnSZIkKQUDZ0mSJCkFA2dJKhHDhw8PnTt3Di1atAgLL7xw2GabbcInn3yS782SpIJh4CxJJWL69OnhmGOOCa+//noYMWJEmGOOOcIOO+wQ/v3333xvmiQVhEaZTCaT742QJNW/H3/8MSy66KLhnXfeCW3atMn35khSg2fGWZJKxEcffRR23333sPzyy4dmzZqFZZddNj7+xRdf5HvTJKkgNM73BkiS6se2224bWrVqFW644YbQsmXLWKJBpvmvv/7K96ZJUkEwcJakEjB58uQwYcKEGDRvuOGG8bFRo0ble7MkqaAYOEtSCVhwwQVjJ43rr78+LLnkkrE8o3///vneLEkqKNY4S1IJoIPG3XffHcaOHRvLM44++uhwwQUX5HuzJKmg2FVDkiRJSsGMsyRJkpSCgbMkSZKUgoGzJEmSlIKBsyRJkpSCgbMkSZKUgoGzJEmSlIKBsyRJkpSCgbMkSZKUgoGzJEmSlIKBsyRJkpSCgbMkSZKUgoGzJEmSFGbt/wDNLta2s/F8zgAAAABJRU5ErkJggg==",
+      "text/plain": [
+       "<Figure size 800x500 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "response.PlotQSPResponse(\n",
+    "    np.append(phiset_even, []),\n",
+    "    pcoefs=poly_even,\n",
+    "    target=lambda x: POLY_MAX_SCALE * POLY_EVEN(x),\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Finding phase angles for the odd polynomial"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Get Chebychev coefficients for the odd parts of the polynomial"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[PolyTaylorSeries] (Cheb) max 1.0000011023789412 is at -0.47942595340330507: normalizing\n",
+      "[PolyTaylorSeries] (Cheb) average error = 6.79904715625726e-07 in the domain [-1, 1] using degree 27\n"
+     ]
+    }
+   ],
+   "source": [
+    "poly_odd = PolyTaylorSeries().taylor_series(\n",
+    "    func=POLY_ODD,\n",
+    "    degree=POLY_DEGREE + 2,\n",
+    "    max_scale=POLY_MAX_SCALE,\n",
+    "    chebyshev_basis=True,\n",
+    "    cheb_samples=(POLY_DEGREE + 2),\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Compute phase angles"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[-1.5707673839990588, -9.221004307891079e-06, 7.761735495503963e-05, -0.0003334565336157169, 0.00016066073603537845, 0.003241736774113324, -0.011197678748920081, 0.007958341102741295, 0.04045713298617204, -0.11729095324548622, 0.08448725166742288, 0.16323661955244617, -0.39046421472405046, 0.21967173426394626, 0.2196717342639496, -0.390464214724052, 0.16323661955244395, 0.0844872516674271, -0.117290953245488, 0.04045713298617093, 0.007958341102743072, -0.011197678748920525, 0.003241736774112658, 0.0001606607360356005, -0.0003334565336157169, 7.761735495503963e-05, -9.221004307669034e-06, 2.8942795837538782e-05]\n",
+      "len(phiset_odd): 28\n"
+     ]
+    }
+   ],
+   "source": [
+    "(phiset_odd) = angle_sequence.QuantumSignalProcessingPhases(\n",
+    "    poly_odd, signal_operator=\"Wx\", method=\"laurent\", measurement=\"x\"\n",
+    ")\n",
+    "print(phiset_odd)\n",
+    "print(\"len(phiset_odd):\", len(phiset_odd))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Plot"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAHACAYAAACyDu7BAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdnNJREFUeJzt3Qmc1fP7//9Xm/ZVRfuifSWUNq2KSORDCkUpa7ZI1sgukl1CCxIikjZaaNe+l1aUFpVWaXP+t+f1/b/P78w0U2emmXmf5XG/3Y7pHGdmXnPmzDnX+3pfr+vKFAgEAg4AAADASWU++f8GAAAAIATOAAAAQBgInAEAAIAwEDgDAAAAYSBwBgAAAMJA4AwAAACEgcAZAAAACAOBMwAAABAGAudT0HyYffv22UcAAADELwLnU9i/f7/Lnz+/fQQAAED8InAGAAAAwkDgDAAAAISBwBkAAAAIA4EzAAAAEAYCZwAAACAMWcO5EwAAiD1qtXrs2DF3/Phxv5cCnFSWLFlc1qxZXaZMmZyfCJwBAIhDR44ccVu3bnX//POP30sBwpIrVy5XrFgxd8YZZzi/EDgDABBn/vvvP7dx40bL4hUvXtwCEb8zecDJzozoQO+vv/6y523FihVd5sz+VBsTOAMAEGcUhCh4LlWqlGXxgEiXM2dOly1bNvfbb7/Z8zdHjhy+rIPNgQAAxCm/snZAtD5f/V8BAAAAEAUInAEAAIAwEDgDAABEiaeeesqde+65LhrcfPPN7qqrrgr7/ps2bbJNqosXL3aRisAZAABEjaZNm7r77rvPRZJIXFMkeP31193QoUNdLKGrBgAAcU7tvvzu56zuHhnZEk+dGfzsBxwP8ufP72INgTMAAHFOQXP//v19XcNDDz3kcufOfcpT/z/99JNdlM0U9fVVW70ePXq4KVOmuG3btrnSpUu7O++80917770JPnfPnj3uwgsvdG+//bbLnj27fe6sWbPsvqtXr3Y1atRwjz/+uLv66qvdokWLgiURy5cvt/VNnz7d1tiqVSv32muvucKFCye7prJly56wft3WrVs3t3LlSjdmzBhXoEAB9+ijj7q77roreJ/ff//d9ezZ002ePNm6SFx66aXuzTffdGedddYJX+/nn392LVq0cH/88Yc7++yzg7cr+71gwQJbrzK+uv7555/bR923UaNGbsiQITZMRNSa8Nlnn3Xvv/++9UquWrWqe/HFF+17eyUU5cqVs6+htcyfP98eq08//dTt3bvX3XHHHfb4NW7c2A0fPtwVKVIkwWP+zTff2PUJEybY99HjqR7i9evXt8fsnHPOcdGCUg0AABAVFGQp2OrevbtNPdRFQbMCv5IlS7ovv/zSgtInn3zSAtIvvvgiwecrGF2zZo374Ycf3NixY92+fftc27ZtXc2aNd3ChQvdM8884x5++OEEn6PAr3nz5u68886zgFHB3/bt291111130jUlRwcotWvXtsC8T58+FtxrPaKfo127dm737t0WiOv2DRs2uA4dOiT5tS6++GJXvnx59/HHHwdvO3r0qAW0Xbt2TXBg9Morr9j9FGwrOH/wwQcTPK6vvvqq3Wfp0qWudevW7sorr3Rr165N8P369u1rBxZ6rDT+ulOnTq537972+QrS161bZ499cg4ePOgeeOABexy9AwMdpOjnjhZknAEAQNSc+ld5hco6QjOsyl4+/fTTwevKjs6ePdsCZy/AFWWLP/jgg2CJxnvvvWflIYMHD7aBGtWqVXNbtmyxINjz1ltvWdD8/PPPB2/76KOPLDj+9ddfXaVKlZJcU3IaNmxoAbPoc2fOnGnZ60suucSCyWXLlgWz6KIMbvXq1d28efMsW56YMtjKHisjLt999537999/E/zcCqb1s3qZ3bvvvtv169cv+P8VMOuA4frrr7frL730kps6daobOHCgZec9Dz74oAXVooC/Y8eOtmb9TN5aTlbTfM011yS4rsdR2Wkd7CiDHQ3IOAMAgKinAO/888+3QCxPnjxWdqDMaihllkPrmpV9rlWrVoIpdHXr1k3wOUuWLLEgUl/Tu1SpUsX+3/r161O8TmWnE19ftWqV/VsfFTCHZqwVzKukw7tPYiqHUKZ3zpw5dl2Bq4Lm0LIXBfWh5RAq0dixY4f9W1n3P//8Mxj8enQ98fesVatW8N9e6Yge09DbvK+bFGWwFWwrS54vX75gOUvi31MkI+MMAECcU2DlZSz9XENqjRw50rKhKjdQIJo3b14riZg7d26C+52qhjopBw4csHIOZWET82qE/VS0aFFbn7LOyrSPHz/eTZs2LcF9NKo6lLLs2hCaUtlCvo63kTPxbScru9A6y5QpYxn+4sWL232VadZGzWhB4AwAQJxTwJOaoNIPyhgfP348wW0qd2jQoIFt8vOEkw2uXLmy++STT9zhw4dts6CoJCJUnTp13FdffWXZUdX1hrum5HiZ4dDr2own+qjNe7p4WWeVMajOWpnn5Nx6662WyVWdtzLLibPHJ6PMr4JYPYZNmjQJ3q7ribPvp2PXrl2W4VfQrE2EMmPGDBdtKNUAAABRQwGsMsnq9LBz507LWlasWNE2nE2cONHqjp944okTAuCkaHObPl8dOVSWoM9XvW9oRlUdL7RZT4GpvqYCct3vlltuCQbLSa0pOQpIX375ZVunyku0odHr/tGyZUsrfbjhhhtsA94vv/ziOnfubAHtBRdckOzXVN2xAmB1rNC6UkpnG5RRV9cMBbeqwdYQktCuJKerYMGC7swzz7QSGpWWqAOKNgpGGwJnAAAQNVSSoc2AysCqnln1sbfddptr3769dZ+oV6+eZTdDs8/JUbCpzXQKEtV67rHHHgt2hfDqnr1srIJktaFTYKu2bqo7VleI5NaUnF69elmQrw2HCnQHDBgQ3HCnYP3bb7+1IFMdMxRIqx5YAe3JaB2qddYaFWin1D333GNBrNamn0+dQ9QuTwckaSVz5sxWUqM2eSrPuP/++31vgZgamQKpKXKJIyqa1y5e9SnUHxgAANFOXRfUuUE1saEb4+CslZuytnrfz5kzZ5p+bWWmFXSnx5RBdbRQD2YFvLHq3wh43lLjDAAA4pbavSmrW6JECeugobZs6kqR1kFzelGArxZ2I0aMiOmgOVIQOAMAgLilSYMqz9BHdcm49tpr3XPPPeeihQamqBb69ttvt17QSF+UapwCpRoAgFgTCae8gWh83rI5EAAAAAgDgTMAAAAQBgJnAAAAIAwEzgAAAEAYCJwBAACAMBA4AwAAZIB//vnHXXPNNdalS1MC9+zZ49tapk2b5vsaolFUBc4///yza9u2rY2/1C/7m2++CeuJUadOHZc9e3ZXoUIFN3To0AxZKwAASHtNmzZNl8l7GbGmYcOGuenTp7tZs2a5rVu3Wrtbv9bXoEGDDF1DrIiqwPngwYOudu3a7u233w7r/ur1d/nll7tmzZrZHHo9aW699VY3ceLEdF8rAACIXEeOHMnw77l+/XpXtWpVV6NGDXf22WdbEtAvZ5xxhu9riEqBKKWljx49+qT36d27d6B69eoJbuvQoUOgdevWYX+fvXv32vfSRwAAYsGhQ4cCK1eutI+JHThw4KSXPXv2BLZs2RJYu3atfY1ly5YFli5dah9//fXXwObNmwM7d+4M/Pvvvwm+7sGDB5P8einRpUsXe08OvWzcuDFw7NixQNeuXQNly5YN5MiRI1CpUqXAwIEDT/jcdu3aBZ599tlAsWLF7L4yc+bMQO3atQPZs2cPnH/++RZb6OsuWrQo+Ln62S699NJA7ty5A0WLFg3ceOONgb/++uuka0qsSZMmCe6j68nFM/nz5w8MGTLE/q2vpft89dVXgaZNmwZy5swZqFWrVmDWrFkJPmfGjBn2NfX/CxQoEGjVqlVg9+7dya5v6tSp9u+///47+DVGjRoVqFatWuCMM84IlClTJvDKK68k+B5lypQJPPfcc4FbbrklkCdPnkCpUqUCgwYNCkTC8zajxPTI7dmzZ7uWLVsmuK1169YnPZ1y+PBhu4RODgQAIF7079//hNsU3x09etQux48ft4/Hjh2z20MHEDdu3NjVqlXLZcmSxS7Kaqqet2DBgu6tt96yGt/EnnrqqbDX9vrrr7tff/3VMrb9+vWz24oUKeL+++8/V7JkSffll1+6M88800ohevToYSO0r7vuuuDnT5482dbzww8/BN/jVQLapk0bN2LECPfbb7+dECOoBrh58+Z2xvq1115zhw4dcg8//LB93SlTpiS7psS+/vpr16dPH7d8+XL7tx6blHjsscfcK6+84ipWrGj/7tixo1u3bp3LmjWrnVVv0aKF69q1q61Ht02dOtV+V8mtb9OmTQm+/oIFC+xn0u+jQ4cO9hjeeeed9njefPPNwfu9+uqr7plnnnGPPvqoGzVqlLvjjjtckyZNXOXKlV08iOnAWXPnzzrrrAS36br+UPTEz5kz5wmf88ILL7inn346A1cJAEBkUlCskgZdFCh7AXNyFKiFlkAogNP77e7du92BAwesLOB0SgNUj6uAM1euXFZm4FGQHvrerZHMSp598cUXCQLn3Llzuw8++CAYtL733nu2nsGDB9sI52rVqrktW7a47t27Bz9HAf95553nnn/++eBtH330kStVqpQFpJUqVUpyTYkVKlTI7uOVSKTUgw8+aOWnop+1evXqFjhXqVLFvfzyy+6CCy5w77zzTvD++v+ecNY3YMAAC76feOIJu66fa+XKlXYgFRo4t2nTxgJq0QGEDiYUpMdL4BxVNc4Z4ZFHHnF79+4NXv74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7jz//PM2HXDfvn3WRaNYsWIWONN6DgCQXgicEfHUUkyjuBUYHT9+3DYJ/vzzz34vCz765ptv3Ny5c20su5xzzjmuYcOGrn79+n4vDQAQwwicEfFy587tunTp4po2bWrX582b5xYtWmSn6hF/du3a5T744AP366+/Wua5YMGCFjg//PDDfi8NABDjCJwRFS688EJXu3ZtyzofPXrUzZ49m6xznHrllVfc+vXr3d69e61sp1KlSjZtskiRIn4vDQAQ4wicERXUZqxBgwbu4osvtuvqrLFw4UK3fft2v5eGDDRjxgz3008/2XRA0XTJevXqWR08AADpjcAZUaNu3bquVq1a7qyzznJHjhxxc+bMsRHLiA///vuve/311y3brC4a6tOsYSe9e/f2e2kAgDhB4IyokT17dtsA5mWdVa6hMdyrVq3ye2nIAO+9955bs2aN27Fjh11XiYbGapcoUcLvpQEA4gSBM6KKTstrM5g2DKrWWV0Vhg0b5veykM60EVCdNNR+ThQsV69e3d10001+Lw0AEEcInBFVcuTIYZlGDUUR9XNW5lnjuBGb1Dnj5ZdftrpmlWvozINKNB588EGXNWtWv5cHAIgjBM6IOsoyqruGgmhlnTWK++OPP/Z7WUgnX331lVu8eLFNjZQKFSq4yy67zOrdAQDISATOiDpFixZ1TZo0cSVLlrTrmzdvdlOmTLH+vogtajk3dOhQt27dOrt+5plnWuDcs2dPv5cGAIhDBM6IShqIUrx4cZctWzY7fa9hKJ988onfy0Ia++GHH+x36/VsVtB82223WUcNAAAyGoEzopL696o9nddRQTXOEyZMcAcOHPB7aUgjf/31l02I9LLN+p1fcMEFVqYBAIAfCJwR9VlnZSIPHjxoGwU///xzv5eFNBAIBNz48eNt2Mn+/futk0qHDh3cQw895PfSAABxjMAZUatGjRrBMdxe1vm7776z4SiIburNremQ6pgirVu3di1atHBlypTxe2kAgDhG4IyodsMNN1hrukyZMlkdrILnMWPG+L0snAZ1SlHZjS5qRVexYkUr0WjcuLHfSwMAxLmoCZx3795tQVK+fPlcgQIFXLdu3U5Zz9q0aVMLqEIvt99+e4atGemvfv36rnLlytZpQxQ4jxo1ygIuRKeff/7Zss0arZ0lSxbLNl966aXujDPO8HtpAIA4FzWBs4LmFStW2C77sWPH2ptrjx49Tvl53bt3t1353kWDFBA7VN+s2ldvIIpa0ing0vME0UdDTgYOHGj1zd6BkbLN1apV83tpAABER+Csekedtv3ggw9s5HKjRo3cm2++6UaOHGnDL04mV65c7uyzzw5elLFGbFFGsly5ctbj1+vrrOcGos+AAQPcsmXL3L59+1zOnDnt771NmzZ2tggAAL9FReCsDUIqz1DmydOyZUvLNs6dO/ekn/vpp5+6woUL20ayRx55xP3zzz8nvf/hw4ftTTv0gsim58E111zjSpcubde3b9/uVq9ebaf7ET1+/PFHN2/evOCEQB0MFSpUyBUpUsTvpQEAED2B87Zt24I1rJ6sWbPam6r+X3I6depkQzGmTp1qQbPGMt94440n/V4vvPCCy58/f/DilQAgsl199dX2u9LvTK3MNBTF6/+LyKdOKIMGDXIbN260+nQdKKtv85133un30gAAiIzAuU+fPids3kt8UeYwtVQDrdP4NWvWtBrp4cOHu9GjR1sNbHIUYKs7g3fxsl+IbNo4pt9x8+bN7frKlSvdkiVLbIgGIp/ODOlAx/t9nXPOOe6mm26yABoAgEiR1c9v3qtXL3fzzTef9D7ly5e32uQdO3YkuP3YsWPWaUP/L1yqlxS9QeuNOSnZs2e3C6LPVVddZZvLZs6cac+X+fPnu1mzZrl27dr5vTScxN9//+2++OKL4AGt+nJXqVLFXXfddX4vDQCAyAmcVbsYTv2idtbv2bPHLViwwJ1//vl225QpU+yUrhcMh2Px4sX20RuYgdjLOmsMd4MGDdw333xj9e96zigLnTdvXr+Xh2S89957btOmTTYhUO3nVKJxxx13WO06AACRJCremapWrWp9XNVaThu+lFG8++673fXXX28jl0XjlpWl8jaEKXv1zDPPWOCkN2UNxejcubO7+OKLXa1atXz+iZBeFDife+651j1FY7gXLVrk5syZ4/eykAydIZg4caLVNovq1C+88ELXsGFDv5cGAEB0Bs5eDaQCY43dVXsqtaR7//33E0wbW7NmTbBrhrKP2qXfqlUr+zyVhajzgkYyI3blyZPHzkpcdNFFwY4sOpg6VTcV+ENtJTW0Rt1sVCKlzig9e/b0e1kAAEReqUZKqIPGiBEjkv3/Or2rbgoeZa5++umnDFodIolKNVTbrCE5Goiisg09f3T6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TiQAAMQLAmcgGU2bNnUXXXSRy5s3rwXMGvahADreHDhwwL3zzjtu7dq11oouf/78rly5cu7uu+/2e2kAAGQoAmcgGQULFrTAWSUbolKNn3/+2Wp948mbb75pXTR2795tGwIrVqzoOnfubAE0AADxhMAZOImLL77YhqKo7Zo2B3711VdW6xsv1K953LhxFjhLqVKlbEPgtdde6/fSAADIcATOwEloIl7VqlUtYBTV+C5YsCAuSjaOHTvmXnnlFcuwHzlyxDZKqkSjd+/ebAgEAMQl3v2AU9AmuOLFi7t8+fJZje/GjRvdoEGDLLCMZWo9t2LFCvfnn3/adZVoXH311a5SpUp+Lw0AAF8QOAOnoIC5U6dO1klCtm/f7tasWeO++OILF6u0GXL58uXujz/+sOtnnXWWq1y5srvtttv8XhoAAL4hcAbCcP3111umVW3qRENARowY4fbt2+dijUZpq65Z5Si7du2yEo3mzZu7++67z+XIkcPv5QEA4BsCZyAMWbNmdd27d7caX9X3KiOrkg21aYs1S5cudTNnzgzWcatURQcODRo08HtpAAD4isAZCFOLFi3ceeedF9woqKyzMrOqA44VyqB///337ttvv7Ua7vLly7v69eu7Sy65xO+lAQDgOwJnIAU0YlqjplWycPjwYcs6v/rqq7ZpMBZKNMaMGeOmTJniNm/e7LJnz+6uvPJK17ZtWyvXAAAg3hE4AymgOucrrrjCVahQwa4rwFRpw5dffuminWq2teFx2rRpwRKNxo0bWzs+AABA4Ayk2J133mmBc+HChe26RlEPGzbMJutFKw04GTJkiJs6dao7fvy4lWgoaL7sssv8XhoAABGDwBlIoVy5crnbb7/d2tNpo6DqglXv/PLLL7topOEmTz31lPv111/dgQMHbCPk2WefbZ00KNEAAOD/IXAGUkFlDHXr1rV6Z1HgrBKH8ePHu2jTv39/KzfxejarHKVZs2auTp06fi8NAICIQuAMpNJDDz1kWee8efNaeYMytpooePDgQRctJk2aZF00Vq9ebdeLFSvmqlWr5vr06eP30gAAiDgEzkAqqS1d165dXZUqVaxk4++//3b//vuvtaiLBsowDxw40ILmo0ePuty5c9t0wCeeeMLlyZPH7+UBABBxCJyB03Dddde5hg0buosuusiuq5Xb9OnT3bJly1wkO3TokHv0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jYt2KX3cOnXqFHj77bft72zVqlWBm2++2R6jzZs3B+/TpUsXe76GPqd2794diNfHTH9f+fLlS/B4bNu2LcF9eK6daNeuXQkes+XLl9vfrB7PeHmujRs3LvDYY48Fvv76a3utHj169Envv2HDhkCuXLksltPr2ptvvmmP2YQJE1L9e0hO3AfOHj0hwwmc//vvv8DZZ58d6N+/f/C2PXv2BLJnzx747LPP7Lp+afpFz5s3L3if8ePHBzJlyhTYsmVLINql1c937rnnBrp27ZrgtnD+QOLpMVPgfO+99570xSVz5swJ3ozeffdde7M6fPhwINql1XPtiy++sBfMo0ePxtxzrW7duoG77roreP348eOB4sWLB1544YUk73/dddcFLr/88gS31atXL3DbbbeF/RoXC1L6uCWmg9a8efMGhg0bliCYadeuXSBWpfQxO9X7Ks+18J5rr732mj3XDhw4EDfPtVDhvFb37t07UL169QS3dejQIdC6des0+z144r5UI6U2btzotm3bZqeTPPnz57eU/+zZs+26PuqU8gUXXBC8j+6fOXNmN3fuXBft0uLnW7BggVu8eLGddk/srrvucoULF3Z169Z1H330kZ3Ki+fH7NNPP7XHo0aNGu6RRx5x//zzT4Kvq1PtZ511VvC21q1bu3379rkVK1a4aJdWf0sq01CpR9asWWPquXbkyBH7Wwp9PdJjo+ve61Fiuj30/t5zxrt/OK9x0S41j1ti+js8evSoK1So0Amni1UypVKhO+64w+3atcvF82OmsqoyZcq4UqVKuXbt2iV4XeK5Ft7P+OGHH7rrr7/e5c6dOy6ea6lxqte1tPg9eBK+i+CU9EcuoYGKd937f/qoJ3MovWHrBda7TzRLi59PLwRVq1a1+vJQ/fr1c82bN7d63UmTJrk777zTXnhVoxqPj1mnTp3sTUd1XkuXLnUPP/ywW7Nmjfv666+DXzep56L3/6JdWjzXdu7c6Z555hnXo0ePmHuu6Wc7fvx4ks+B1atXJ/k5yT1nQl+/vNuSu0+0S83jlpj+FvV3GfpGrBrT9u3bu3Llyrn169e7Rx991F122WX2xpwlSxYXb4+ZAjodkNaqVcsOXl955RV7zVfwXLJkSZ5rYTzXVIO7fPlye88MFcvPtdRI7nVNSaRDhw65v//++7T/5mM6cO7Tp4976aWXTnqfVatW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",
+      "text/plain": [
+       "<Figure size 800x500 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "response.PlotQSPResponse(\n",
+    "    np.append(phiset_odd, []),\n",
+    "    pcoefs=poly_odd,\n",
+    "    target=lambda x: POLY_MAX_SCALE * POLY_ODD(x),\n",
+    ")"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.12.4"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.metadata.json b/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.metadata.json
new file mode 100644
index 000000000..1fae8f87d
--- /dev/null
+++ b/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.metadata.json
@@ -0,0 +1,7 @@
+{
+  "friendly_name": "Gaussian State Preparation using QSVT",
+  "description": "Quantum state preparation without coherent arithmetic - Gaussian state",
+  "qmod_type": ["algorithms"],
+  "problem_domain_tags": [],
+  "level": []
+}
diff --git a/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.qmod b/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.qmod
new file mode 100644
index 000000000..af0ee7dc5
--- /dev/null
+++ b/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.qmod
@@ -0,0 +1,118 @@
+qstruct MyQStruct {
+  x: qnum<8, UNSIGNED, 8>;
+  a1: qbit;
+  a2: qbit;
+  a3: qbit;
+}
+
+qfunc projector_cnot(reg: qnum, aux: qbit) {
+  aux ^= reg == 0;
+}
+
+qfunc u_sin(x: qbit[], a: qbit) {
+  repeat (i: x.len) {
+    CRY(2 ** (((-x.len) + i) + 1), x[i], a);
+  }
+  X(a);
+}
+
+qfunc u_f(reg: MyQStruct) {
+  within {
+    H(reg.a3);
+  } apply {
+    qsvt_lcu([
+      4.7123,
+      3.1416,
+      3.1414,
+      3.1423,
+      3.1413,
+      3.1351,
+      3.164,
+      3.1257,
+      3.0607,
+      3.3762,
+      2.9726,
+      2.8151,
+      3.9225,
+      2.7022,
+      2.7022,
+      3.9225,
+      2.8151,
+      2.9726,
+      3.3762,
+      3.0607,
+      3.1257,
+      3.164,
+      3.1351,
+      3.1413,
+      3.1423,
+      3.1414,
+      3.1416,
+      (-83.2523),
+      0.0
+    ], [
+      4.7123,
+      3.1416,
+      3.1415,
+      3.1416,
+      3.1428,
+      3.137,
+      3.1445,
+      3.1681,
+      3.0581,
+      3.203,
+      3.329,
+      2.6441,
+      3.4704,
+      3.5741,
+      2.2316,
+      3.5741,
+      3.4704,
+      2.6441,
+      3.329,
+      3.203,
+      3.0581,
+      3.1681,
+      3.1445,
+      3.137,
+      3.1428,
+      3.1416,
+      3.1415,
+      3.1416,
+      (-86.3939)
+    ], lambda(_reg, aux) {
+      projector_cnot(_reg[0], aux);
+    }, lambda(_reg, aux) {
+      projector_cnot(_reg[0], aux);
+    }, lambda(_reg) {
+      u_sin(_reg[1:_reg.len], _reg[0]);
+    }, {reg.a1, reg.x}, reg.a2, reg.a3);
+  }
+  H(reg.a3);
+}
+
+qfunc state_prep(reg: MyQStruct) {
+  hadamard_transform(reg.x);
+  u_f(reg);
+}
+
+qfunc u_amp(reg: MyQStruct) {
+  exact_amplitude_amplification(0.3958, lambda(r) {
+    reflect_about_zero(r[reg.x.size:r.len]);
+  }, lambda(_reg) {
+    state_prep(_reg);
+  }, {reg.x, reg.a1, reg.a2, reg.a3});
+}
+
+qfunc main(output x: qnum, output a1: qbit, output a2: qbit, output a3: qbit) {
+  allocate(8, x);
+  allocate(1, a1);
+  allocate(1, a2);
+  allocate(1, a3);
+  reg: MyQStruct;
+  within {
+    {x, a1, a2, a3} -> reg;
+  } apply {
+    u_amp(reg);
+  }
+}
diff --git a/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.synthesis_options.json b/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.synthesis_options.json
new file mode 100644
index 000000000..68bee1756
--- /dev/null
+++ b/community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.synthesis_options.json
@@ -0,0 +1,44 @@
+{
+  "constraints": {
+    "max_gate_count": {},
+    "optimization_parameter": "no_opt"
+  },
+  "preferences": {
+    "machine_precision": 8,
+    "custom_hardware_settings": {
+      "basis_gates": [
+        "s",
+        "u1",
+        "r",
+        "u2",
+        "cx",
+        "x",
+        "rz",
+        "cz",
+        "sxdg",
+        "t",
+        "u",
+        "cy",
+        "p",
+        "rx",
+        "id",
+        "h",
+        "sdg",
+        "ry",
+        "z",
+        "sx",
+        "y",
+        "tdg"
+      ],
+      "is_symmetric_connectivity": true
+    },
+    "debug_mode": true,
+    "synthesize_all_separately": false,
+    "optimization_level": 3,
+    "output_format": ["qasm"],
+    "pretty_qasm": true,
+    "transpilation_option": "auto optimize",
+    "timeout_seconds": 1800,
+    "random_seed": 705996082
+  }
+}
diff --git a/tests/notebooks/test_stateprep_guassian_using_qsvt.py b/tests/notebooks/test_stateprep_guassian_using_qsvt.py
new file mode 100644
index 000000000..2df0ba7a7
--- /dev/null
+++ b/tests/notebooks/test_stateprep_guassian_using_qsvt.py
@@ -0,0 +1,21 @@
+from tests.utils_for_testbook import (
+    validate_quantum_program_size,
+    validate_quantum_model,
+    wrap_testbook,
+)
+from testbook.client import TestbookNotebookClient
+
+
+@wrap_testbook("stateprep_guassian_using_qsvt", timeout_seconds=600)
+def test_notebook(tb: TestbookNotebookClient) -> None:
+    # test models
+    validate_quantum_model(tb.ref("qmod"))
+    # test quantum programs
+    validate_quantum_program_size(
+        tb.ref("qprog"),
+        expected_width=None,
+        expected_depth=None,
+    )
+
+    # test notebook content
+    pass  # Todo
diff --git a/tests/resources/timeouts.yaml b/tests/resources/timeouts.yaml
index 6e1fbe5ef..0dd4164a2 100644
--- a/tests/resources/timeouts.yaml
+++ b/tests/resources/timeouts.yaml
@@ -348,3 +348,5 @@ whats_classiq.ipynb: 400
 whats_classiq.qmod: 1000
 whitebox_fuzzing.ipynb: 720
 whitebox_fuzzing.qmod: 720
+stateprep_guassian_using_qsvt.ipynb: 600
+stateprep_guassian_using_qsvt.qmod: 600


Reviews:
user: login: orsa-classiq
body:  
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T07:24:26Z
user: login: orsa-classiq
body: @zzz845zz Great work!
please see my comments throught the code. Here are some general ones:

1. We want the entire code to be in a single notebook as possible, devided into sections, instead of many separate ones. 
2. Please follow all the contribution guidelines, including adding a qmod file (you can use a `write_qmod` command in the notebook)
3. The notebook should contain explanation of the algorithm (motivation, how it works, performance, etc.), including equations where needed.
4. No need to have different notebooks with different parameters. If you want to compare different gaussains do it in the general notebook

For example you can see notebooks under the `algorithms` directory, or https://github.com/Classiq/classiq-library/pull/901
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T07:40:04Z
user: login: venator2021
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-19T13:30:48Z
user: login: venator2021
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-19T13:33:52Z
user: login: zzz845zz
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T13:37:34Z
user: login: zzz845zz
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T13:41:46Z
user: login: orsa-classiq
body:  
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-24T12:42:03Z
user: login: venator2021
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-27T12:33:05Z
user: login: venator2021
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-27T12:35:28Z
user: login: zzz845zz
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-03T07:16:31Z
user: login: zzz845zz
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-03T07:18:06Z
user: login: zzz845zz
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-03T07:56:28Z
user: login: orsa-classiq
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-12T13:18:08Z
user: login: orsa-classiq
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-12T13:18:36Z
user: login: orsa-classiq
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-12T13:19:52Z
user: login: orsa-classiq
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-12T13:29:57Z
user: login: venator2021
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-13T14:50:27Z
user: login: venator2021
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-13T15:01:34Z
user: login: zzz845zz
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-13T15:30:34Z
user: login: zzz845zz
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-13T15:43:33Z
user: login: orsa-classiq
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-19T07:02:39Z
user: login: orsa-classiq
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-19T07:10:25Z
user: login: orsa-classiq
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-21T10:58:22Z
user: login: orsa-classiq
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-22T12:01:36Z

Review comments:
diff_hunk: @@ -0,0 +1,485 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/finding_exact_amplitude.ipynb
user: login: orsa-classiq
body: <p>How exactly do you define P(a, alpha)? it is not clear</p><p> </p><p>I don't understand this notebook. Do you claim that the exact amplitude amplification scheme is not correct?</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559797'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='1'/>
created_at: 2025-04-14T07:24:24Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,485 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/finding_exact_amplitude.ipynb
user: login: orsa-classiq
body: <p>what is <code>a</code> in the graph? it is missing </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559803'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='2'/>
created_at: 2025-04-14T07:24:24Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,281 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/pyqsp_gaussian.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #8.    def h(f, min, max):
</pre><p><code>min</code> and <code>max</code>  are python function, rename to remove ambiguity</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559806'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='0'/>
created_at: 2025-04-14T07:24:24Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,281 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/pyqsp_gaussian.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #4.    MIN = -2  # min x
</pre><p>I would define <code>TRANCATION_VALUE</code> which is how many sigmas you take, then use it to calculate MIN and MAX.</p><p>also give MIN and MAX more indicative names </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559810'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='1'/>
created_at: 2025-04-14T07:24:24Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,281 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/pyqsp_gaussian.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #13.    POLY_EVEN = lambda x: (POLY_FUNC(x) + POLY_FUNC(-x))
</pre><p>why do you need the odd polynomial? exp(-a*arcsin(x)^2) is odd</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559814'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='1'/>
created_at: 2025-04-14T07:24:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,281 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/pyqsp_gaussian.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #3.        degree=POLY_DEGREE+3,
</pre><p>why + 3? explain in a comment</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559815'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='4'/>
created_at: 2025-04-14T07:24:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #18.    classiq.qmod.symbolic.pi._expr = str(pi)
</pre><p>you don't need this hack anymore</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559824'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='0'/>
created_at: 2025-04-14T07:24:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #1.    # Parameter of the Gaussian state preparation
</pre><p>is the gaussian in amplitude or probability? need to define</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559835'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='2'/>
created_at: 2025-04-14T07:24:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #10.    def u_sin(x: QArray[QBit], a: QNum) -&gt; None:
</pre><p>explain what this function does</p><p> </p><p>isn't <code>a</code> a QBit? </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559839'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='4'/>
created_at: 2025-04-14T07:24:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #3.        control(reg == 0, lambda: X(aux))
</pre><p>can do also <code>aux ^= (reg == 0)</code> which is more elegant </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559843'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='6'/>
created_at: 2025-04-14T07:24:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #15.            x (Output[QNum]): _description_
</pre><p>missing description</p><p> </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559845'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='6'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #31.        full_reg = QArray[QBit]("full_reg")
</pre><p>not need to specify <code>[QBit]</code>,it is already the default</p><p>also no need to give the string <code>"full_reg"</code> anymore   </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559847'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='6'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #32.        bind([a1, x], full_reg)
</pre><p>put the bind within the first lambda of the <code>within_apply</code></p><p>(note that a lamba can contain a list, then will apply of the the statements in the list) </p><p>e.g:</p><p><code>within_apply(lambda: [X(a1), Y(a2)],...)</code>  </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559852'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='6'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #52.        H(a3_qsvt)
</pre><p>I think this one is a mistake, not?</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559857'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='OPEN' data-cellIndex='6'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #3.        # reg[0:NUM_QUBITS]: x
</pre><p>instead of doing the slicing, use a suitable <code>QStruct</code>. It will make the code much cleaner  </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559860'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='9'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #2.    def check_block(a: QNum, res: QBit):
</pre><p>I think you can just use <code>reflect_about_zero</code> function, instead of defining this oracle and putting it inside the <code>phase_oracle</code> </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559863'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='11'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #22.        bind([x, a1, a2, a3], reg)
</pre><p>you can put the <code>bind</code> and amplitude amplification  in a <code>within_apply</code> statement </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559867'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='13'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #8.        allocate(NUM_QUBITS, x)
</pre><p>see my comment about QStruct</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559870'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='15'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #16.        constraints=Constraints(max_width=100),
</pre><p>why such a large number of qubits?</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559872'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='15'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #26.    qprog = synthesize(qmod)
</pre><p>add a <code>show</code> command after the synthesis </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559876'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='15'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: orsa-classiq
body: <p>very nice! </p><p>it is hard to see the difference between the expected points and sampled points, maybe plot one of them as a scatter plot?</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2041559881'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='17'/>
created_at: 2025-04-14T07:24:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,485 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/finding_exact_amplitude.ipynb
user: login: venator2021
body: <p>P(a, α) is the probability obtained from applying exact amplitude amplification with input amplitude a, when the true amplitude we aim to amplify is alpha.</p><p> </p><p>We followed the equations from the referenced paper. However, in practice, we observed that the amplitude needed to be adjusted by multiplying it with a constant factor. This discrepancy seems to come from the approximation of summation to integral in the paper. But we cannot verify it analytically, so we calculated it numerically.</p>
created_at: 2025-04-19T13:30:48Z
author_association: NONE
diff_hunk: @@ -0,0 +1,485 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/finding_exact_amplitude.ipynb
user: login: venator2021
body: <p>This is the example graph, value of a is fixed. When we apply the exact amplitude amplification with input amplitude a, we get some probability that is not 1 if the true amplitude does not match to it. We can numerically get that value alpha by plotting the P(a, alpha) graph for the fixed a and figuring out the corresponding alpha value which gives the same result. Due to the shape of the function, usually there are two possibility for alpha. But if we try different a for same setting, we could find that there is one common possible alpha. So we used that value as an real value alpha</p>
created_at: 2025-04-19T13:33:52Z
author_association: NONE
diff_hunk: @@ -0,0 +1,281 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/materials/pyqsp_gaussian.ipynb
user: login: zzz845zz
body: We need $h(x)=\text{exp}(-(4\arcsin(x)-2)^2)$ following Equation (3) in the paper, using parameters $a = -2$ and $b = 2$. This function does not have definite parity (even or odd).
created_at: 2025-04-21T13:37:34Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,420 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_n6_rate1.5.ipynb
user: login: zzz845zz
body: <p>In theory, this H seemed unnecessary, but we observed that the expected result only appears when it's included. We're not sure why it's needed.</p>
created_at: 2025-04-21T13:41:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: <p>please use |xxx\rangle instead of \ket{xxx} because it does not render well on our documentation.]</p><p> </p><p> </p><p>Also - There is missing an explanation about the algorithm - how does it work generally? what are the benefits of the algorithm? what is the complexity. Please look at examples under <code>algorithms</code> directory to see what I mean </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2058333737'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='1'/>
created_at: 2025-04-24T12:42:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #11.    from classiq import QuantumProgram
</pre><p>as imports use just <code>from classiq import *</code> and <code>from classiq.execution import *</code>.It should contain everything   </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2058333751'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='2'/>
created_at: 2025-04-24T12:42:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #5.            iteration=lambda i: CRY(theta=2 ** (-NUM_QUBITS + i + 1), ctrl=x[i], target=a),
</pre><p>instead of using globals like NUM_QUBITS, it is a better practice to use x.len for QArray and x.size for QNum and QStruct. Fix along the entire notebook</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2058333754'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='7'/>
created_at: 2025-04-24T12:42:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: <p>you can put a snapshot from the circuit in the paper (then add a caption and mention that it is from the paper)</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2058333759'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='9'/>
created_at: 2025-04-24T12:42:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #6.    def u_f(
</pre><p>why don't u_f accept the qstruct? you can also create an hierarchy of qstructs, see <a href="https://github.com/Classiq/classiq-library/blob/main/algorithms/differential_equations/time_marching/time_marching.ipynb" target="_blank">https://github.com/Classiq/classiq-library/blob/main/algorithms/differential_equations/time_marching/time_marching.ipynb</a> for example</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2058333766'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='17'/>
created_at: 2025-04-24T12:42:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #13.    def u_amp(
</pre><p>why don't you pass u_amp the struct you defined? then no need for the bind</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2058333770'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='23'/>
created_at: 2025-04-24T12:42:03Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: 

<pre class="ql-syntax" spellcheck="false">Line #37.        for parsed_state in result.parsed_state_vector:
</pre><p>why do you need this filtering? it is better to show that the <code>a_i's</code> are almost always zero thanks to the amplification</p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2058333773'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='27'/>
created_at: 2025-04-24T12:42:03Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: <p>I think the problem is with your code - it didn't calculate well the amplitude. You should calculate the discrete sum of the gaussian and not an integral. Do it carefully. </p>
<br/>

 _Reply via <a href='https://app.reviewnb.com/Classiq/classiq-library/pull/908/discussion/#comment-2058333780'>ReviewNB</a>_ <div id='ReviewNBCommentContext-DoNotDelete' style='display:none' data-state='RESOLVED' data-cellIndex='44'/>
created_at: 2025-04-24T12:42:03Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,9 @@
+{
+  "friendly_name": "",
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.metadata.json
user: login: orsa-classiq
body: missing. See how it looks for other algorithms
created_at: 2025-04-24T12:42:48Z
author_association: CONTRIBUTOR
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/attachment/image1.png
user: login: orsa-classiq
body: why don't you create it in the notebook? 
created_at: 2025-04-24T12:43:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: venator2021
body: <p>It is true that we approximated the calculation with integral, but our resolution was about $2^{-8}$. So, it is about few hundred points to approximate the integral and it gives sufficiently good answer. (For example, 200 points and $\sigma = 1.0$, the relative error to the original value is less then $10^{-3}\%$) Therefore, we concluded it is not the error from that calculation.</p><p> </p>
created_at: 2025-04-27T12:33:05Z
author_association: NONE
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: venator2021
body: ![Comment_Exact Amplitude Estimation](https://github.com/user-attachments/assets/dd3ad46c-7418-47b4-b29d-a221fdcce4b9)

This is the example graph for the relative error due to discrete sum
created_at: 2025-04-27T12:35:28Z
author_association: NONE
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: zzz845zz
body: <p>Thanks! Passing <code>MyQStruct</code> removes the need for <code>bind</code>, but I kept the function’s signature and each qubit’s role explicit for clarity. Using the struct in <code>state_prep</code> helps with slicing, but using it everywhere felt like overkill for now.</p>
created_at: 2025-05-03T07:16:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: zzz845zz
body: <p>Thanks! But I prefer to keep <code>u_f</code>’s interface explicit for now, to make the function signature and qubit roles immediately clear.</p>
created_at: 2025-05-03T07:18:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: zzz845zz
body: <p>We apply this filtering to ensure that the amplitudes of states with <code>aux = 0</code> follow the Gaussian distribution. Without it, we might mistakenly accept cases where the overall amplitudes, including those with <code>aux = 1, 2, ...</code>, coincidentally match the desired distribution.</p>
created_at: 2025-05-03T07:56:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: <p>So it seems that you don't need the qstruct at all. </p><p>I think it is much clearer to use the struct here and also in <code>u_f</code></p>
created_at: 2025-05-12T13:18:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: <p>I think you should put assert then that the total amplitude of the states with aux != 0 is very small, to show that the amplification worked.</p>
created_at: 2025-05-12T13:19:52Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: <p>I think you still have a mistake - on my computer it worked well.</p><p>Maybe it is the normalization factor, see the following calculation that should work:</p>

<pre class="ql-syntax" spellcheck="false">grid = np.linspace(-2**(NUM_QUBITS-1), 2**(NUM_QUBITS-1)-1, 2**(NUM_QUBITS))
amplitude = np.linalg.norm(np.exp(-(exp_rate/2)*(grid**2)) / np.sqrt(grid.shape[0]))
</pre>
created_at: 2025-05-12T13:29:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: venator2021
body: Thank you for your comment, I tested the code with your amplitude, However, the amplitude before amplification was pretty different.

Our code gave 0.40581138324751564 and your suggestion gave us 0.08321276393290943. Considering our code worked adequetly, it seems that the normalization factor is not the problem.

To be specific, we are suspecting mixed parity feature we used is making problem with LCU while calculating the amplitude in the same way as the paper. Since its quantification is not analytically good, we numerically dealt with it.
created_at: 2025-05-13T14:50:27Z
author_association: NONE
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: venator2021
body: It seems that the amplitude in the paper is for the case of definite parity. And we used the mixed parity in our implementation. So we are suspecting that the error comes from that difference.
created_at: 2025-05-13T15:01:34Z
author_association: NONE
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: zzz845zz
body: <p>Thank you for your suggestion. But we already included an assertion to check whether the total probability of the states with <code>aux = 0</code> is close to 1, which implies that the total probability of the states with <code>aux != 0</code> is very small.</p>
created_at: 2025-05-13T15:30:34Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: zzz845zz
body: <p>I agree that the qstruct isn't strictly necessary in all cases. However, wrapping the inputs of <code>u_amp</code> and <code>u_f</code> into a struct feels like an unnecessary abstraction—similar to rewriting</p>

<pre class="ql-syntax" spellcheck="false">def add(a, b):
&nbsp;&nbsp;return a + b
</pre><p>as</p>

<pre class="ql-syntax" spellcheck="false">struct MyStruct:
  a
  b
    
def add(s: MyStruct):
  return s.a + s.b 
</pre><p>What do you think? Anyway, I don’t have a strong opinion on this. I’ll go with whatever you suggest next.</p>
created_at: 2025-05-13T15:43:33Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: <p>I prefer the qstruct version, as it saves the ugly hard-coded indexing such as <code>reg[x.size : x.size + 3]</code>  <span class="ql-cursor">﻿</span></p>
created_at: 2025-05-19T07:02:39Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,1294 @@
+{
path: community/paper_implementation_project/quantum_state_preparation_without_coherent_arithmetic/stateprep_guassian_using_qsvt.ipynb
user: login: orsa-classiq
body: <p>It makes total sense - you get a factor of sqrt(2) because of the LCU of the 2 qsvts. so in the amplitude amplification you need to take it into account. </p><p> </p><p>Please fix it in the code, then remove this appendix because you don't need it anymore</p>
created_at: 2025-05-19T07:10:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,21 @@
+from tests.utils_for_testbook import (
+    validate_quantum_program_size,
+    validate_quantum_model,
+    wrap_testbook,
+)
+from testbook.client import TestbookNotebookClient
+
+
+@wrap_testbook("stateprep_guassian_using_qsvt", timeout_seconds=60)
path: tests/notebooks/test_stateprep_guassian_using_qsvt.py
user: login: orsa-classiq
body: change timeout to 600
created_at: 2025-05-21T10:58:21Z
author_association: CONTRIBUTOR

PR comments:
user: login: review-notebook-app[bot]
created_at: 2025-04-01T13:49:28Z
body: Check out this pull request on&nbsp; <a href="https://app.reviewnb.com/Classiq/classiq-library/pull/908"><img align="absmiddle"  alt="ReviewNB" height="28" class="BotMessageButtonImage" src="https://raw.githubusercontent.com/ReviewNB/support/master/images/button_reviewnb.png"/></a> 

 See visual diffs & provide feedback on Jupyter Notebooks. 

---

 <i>Powered by <a href='https://www.reviewnb.com/?utm_source=gh'>ReviewNB</a></i>
author_association: NONE
user: login: zzz845zz
created_at: 2025-04-21T13:49:39Z
body: @orsa-classiq Thank you for your valuable feedback!

- We merged the entire code into a single notebook and included metadata files following  the contribution guidelines.
- We added explanations for each code block along with the corresponding equations.

Could you please review our code again?
author_association: CONTRIBUTOR
user: login: orsa-classiq
created_at: 2025-04-21T19:21:13Z
body: @zzz845zz sure, I will review it
author_association: CONTRIBUTOR
user: login: orsa-classiq
created_at: 2025-04-24T12:46:20Z
body: @zzz845zz good improvement!
1. please see my comments and fix accordingly
2. you are missing a test file and records in the timeouts.yaml file. Read the contribution guideliness
3. make sure you pass the tests, so we will be able to merge it
author_association: CONTRIBUTOR
user: login: zzz845zz
created_at: 2025-05-13T16:02:07Z
body: @orsa-classiq Thank you for your valuable review.

1. We’ve addressed your comments accordingly.
2. We added test code and updated the `timeouts.yaml` file, following the contribution guidelines.
3. However, the CI is failing due to a version mismatch in `pyqsp`. It appears that the CI installs `pyqsp==0.1.6`, but our code requires the latest version, `pyqsp==0.2.0`. Could you help resolve this?
author_association: CONTRIBUTOR
user: login: orsa-classiq
created_at: 2025-05-19T07:14:57Z
body: @zzz845zz I have just upgraded the pyqsp version of the repo testing to 0.2.0, now things should work for you. 
Please fix my final 2 comments in the notebook and we will merge :) 
author_association: CONTRIBUTOR
user: login: zzz845zz
created_at: 2025-05-19T15:24:25Z
body: @orsa-classiq Hi! We’ve addressed your last two comments, but the CI is failing for an unknown reason. Could you help us resolve this?
author_association: CONTRIBUTOR
user: login: orsa-classiq
created_at: 2025-05-21T10:59:04Z
body: @zzz845zz It seems that the problem is that you gave the test only 60 seconds to run, change it to 600 
author_association: CONTRIBUTOR
user: login: zzz845zz
created_at: 2025-05-21T14:12:59Z
body: @orsa-classiq Thank you. We have addressed all of your comments.

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-22T12:01:55Z
body: 🎊 **Fantastic work @zzz845zz!** Your very first PR to classiq-library has been merged! 🎉🥳

If you're feeling adventurous, why not dive into another issue and keep contributing? The Classiq community would love to see more from you! 🚀

Happy coding! 👩‍💻👨‍💻
author_association: NONE
user: login: orsa-classiq
created_at: 2025-05-22T12:02:43Z
body: Well done @zzz845zz ! thank your very much for the hard work, it is a wonderful contribution to the library
author_association: CONTRIBUTOR