From 64dc605dff16e4cfbab6ea2789a95d638b352023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=B6nberger?= <101660501+danielschoenberger@users.noreply.github.com> Date: Thu, 22 Feb 2024 22:29:37 +0100 Subject: [PATCH 1/2] initial commit --- Cycles.py | 805 ++++ QASM_files/full_register_access_06.qasm | 10 + QASM_files/full_register_access_50.qasm | 55 + .../ghz_nativegates_quantinuum_tket_50.qasm | 991 ++++ QASM_files/qft_12qubits.qasm | 83 + QASM_files/qft_17qubits.qasm | 158 + QASM_files/qft_20qubits.qasm | 215 + QASM_files/qft_24qubits.qasm | 305 ++ QASM_files/qft_30qubits.qasm | 470 ++ QASM_files/qft_62qubits.qasm | 1958 ++++++++ QASM_files/qft_6qubits.qasm | 26 + QASM_files/qft_8qubits.qasm | 41 + QASM_files/qft_90qubits.qasm | 4100 +++++++++++++++++ ..._nativegates_quantinuum_qiskit_opt3_6.qasm | 18 + .../qft_nativegates_quantinuum_tket_3.qasm | 67 + ...t_nativegates_quantinuum_tket_3_short.qasm | 33 + .../full_register_access_06.json | 6 + .../full_register_access_50.json | 6 + algorithms_heuristic/qft_24.json | 6 + compilation.py | 84 + run_heuristic.py | 332 ++ 21 files changed, 9769 insertions(+) create mode 100644 Cycles.py create mode 100644 QASM_files/full_register_access_06.qasm create mode 100644 QASM_files/full_register_access_50.qasm create mode 100644 QASM_files/ghz_nativegates_quantinuum_tket_50.qasm create mode 100644 QASM_files/qft_12qubits.qasm create mode 100644 QASM_files/qft_17qubits.qasm create mode 100644 QASM_files/qft_20qubits.qasm create mode 100644 QASM_files/qft_24qubits.qasm create mode 100644 QASM_files/qft_30qubits.qasm create mode 100644 QASM_files/qft_62qubits.qasm create mode 100644 QASM_files/qft_6qubits.qasm create mode 100644 QASM_files/qft_8qubits.qasm create mode 100644 QASM_files/qft_90qubits.qasm create mode 100644 QASM_files/qft_nativegates_quantinuum_qiskit_opt3_6.qasm create mode 100644 QASM_files/qft_nativegates_quantinuum_tket_3.qasm create mode 100644 QASM_files/qft_nativegates_quantinuum_tket_3_short.qasm create mode 100644 algorithms_heuristic/full_register_access_06.json create mode 100644 algorithms_heuristic/full_register_access_50.json create mode 100644 algorithms_heuristic/qft_24.json create mode 100644 compilation.py create mode 100644 run_heuristic.py diff --git a/Cycles.py b/Cycles.py new file mode 100644 index 0000000..a346e14 --- /dev/null +++ b/Cycles.py @@ -0,0 +1,805 @@ +import matplotlib.pyplot as plt +import networkx as nx +import numpy as np +from more_itertools import distinct_combinations, pairwise + + +# create dictionary to swap from idx to idc and vice versa +def create_idc_dictionary(nx_g): + edge_dict = {} + for edge_idx, edge_idc in enumerate(nx_g.edges()): + edge_dict[edge_idx] = tuple(sorted(edge_idc, key=sum)) + return edge_dict + + +def get_idx_from_idc(edge_dictionary, idc): + idc = tuple(sorted(idc, key=sum)) + return list(edge_dictionary.values()).index(idc) + + +def get_idc_from_idx(edge_dictionary, idx): + return edge_dictionary[idx] + + +def get_path_to_node(nx_g, src, tar, exclude_exit=False, exclude_first_entry_connection=True): + edge_path = [] + if exclude_first_entry_connection is True: + # lambda function to give path over processing zone huge weight -> doesn't take that path if not necessary - now only encludes entry edge -> can use exit (in MemGrid was != trap before and then to exit node -> not PZ node) + node_path = nx.shortest_path( + nx_g, + src, + tar, + lambda _, __, edge_attr_dict: (edge_attr_dict["edge_type"] == "first_entry_connection") * 1e8 + 1, + ) + # also exclude exit edge if necessary + if exclude_exit is True: + node_path = nx.shortest_path( + nx_g, + src, + tar, + lambda _, __, edge_attr_dict: (edge_attr_dict["edge_type"] in ("first_entry_connection", "exit")) * 1e8 + + 1, + ) + + # only exclude exit edge + elif exclude_exit is True: + node_path = nx.shortest_path( + nx_g, src, tar, lambda _, __, edge_attr_dict: (edge_attr_dict["edge_type"] == "exit") * 1e8 + 1 + ) + + else: + node_path = nx.shortest_path(nx_g, src, tar) + # shortest path should always be the correct path in a grid -> care for changes + + for edge in pairwise(node_path): + edge_path.append(edge) + + return edge_path + + +def calc_dist_to_pz(nx_g_creator, edge_idx): + edge_idc = get_idc_from_idx(nx_g_creator.idc_dict, edge_idx) + node1, node2 = edge_idc[0], edge_idc[1] + + path1 = get_path_to_node( + nx_g_creator.networkx_graph, node1, nx_g_creator.processing_zone, exclude_first_entry_connection=True + ) + path2 = get_path_to_node( + nx_g_creator.networkx_graph, node2, nx_g_creator.processing_zone, exclude_first_entry_connection=True + ) + if edge_idx == get_idx_from_idc(nx_g_creator.idc_dict, nx_g_creator.parking_edge): + return 0 + if edge_idx == get_idx_from_idc(nx_g_creator.idc_dict, nx_g_creator.first_entry_connection_from_pz): + return max(len(path1), len(path2)) + 1 + return min(len(path1), len(path2)) + 1 + + +# def circle_is_contained_in_other_circle(subseq, seq): +# subseq_len = len(subseq) +# seq_len = len(seq) + +# if subseq_len > seq_len: +# return False + +# # Duplicate the sequence to handle wrap-around cases (remove last element, circles constructed with first element added at the end) +# seq_extended = seq[:-1] + seq +# return any(seq_extended[i : i + subseq_len] == subseq for i in range(seq_len)) + + +class MZGraphCreator: + def __init__(self, m, n, ion_chain_size_vertical, ion_chain_size_horizontal): + self.m = m + self.n = n + self.ion_chain_size_vertical = ion_chain_size_vertical + self.ion_chain_size_horizontal = ion_chain_size_horizontal + self.networkx_graph = self.create_graph() + + self.idc_dict = create_idc_dictionary(self.networkx_graph) + + def create_graph(self): + self.m_extended = self.m + (self.ion_chain_size_vertical - 1) * (self.m - 1) + self.n_extended = self.n + (self.ion_chain_size_horizontal - 1) * (self.n - 1) + + networkx_graph = nx.grid_2d_graph(self.m_extended, self.n_extended) + self._set_trap_nodes(networkx_graph) + self._remove_horizontal_edges(networkx_graph) + self._remove_vertical_edges(networkx_graph) + self._remove_horizontal_nodes(networkx_graph) + self._set_junction_nodes(networkx_graph) + nx.set_edge_attributes(networkx_graph, "trap", "edge_type") + + return networkx_graph + + def _set_trap_nodes(self, networkx_graph): + for node in networkx_graph.nodes(): + networkx_graph.add_node(node, node_type="trap_node", color="b") + + def _remove_horizontal_edges(self, networkx_graph): + for i in range(0, self.m_extended - self.ion_chain_size_vertical, self.ion_chain_size_vertical): + for k in range(1, self.ion_chain_size_vertical): + for j in range(self.n_extended - 1): + networkx_graph.remove_edge((i + k, j), (i + k, j + 1)) + + def _remove_vertical_edges(self, networkx_graph): + for i in range(0, self.n_extended - self.ion_chain_size_horizontal, self.ion_chain_size_horizontal): + for k in range(1, self.ion_chain_size_horizontal): + for j in range(self.m_extended - 1): + networkx_graph.remove_edge((j, i + k), (j + 1, i + k)) + + def _remove_horizontal_nodes(self, networkx_graph): + for i in range(0, self.m_extended - self.ion_chain_size_vertical, self.ion_chain_size_vertical): + for k in range(1, self.ion_chain_size_vertical): + for j in range(0, self.n_extended - self.ion_chain_size_horizontal, self.ion_chain_size_horizontal): + for s in range(1, self.ion_chain_size_horizontal): + networkx_graph.remove_node((i + k, j + s)) + + def _set_junction_nodes(self, networkx_graph): + for i in range(0, self.m_extended, self.ion_chain_size_vertical): + for j in range(0, self.n_extended, self.ion_chain_size_horizontal): + networkx_graph.add_node((i, j), node_type="junction_node", color="g") + + def get_graph(self): + return self.networkx_graph + + +class GraphCreator: + def __init__(self, m, n, ion_chain_size_vertical, ion_chain_size_horizontal): + self.m = m + self.n = n + self.ion_chain_size_vertical = ion_chain_size_vertical + self.ion_chain_size_horizontal = ion_chain_size_horizontal + self.networkx_graph = self.create_graph() + + self.idc_dict = create_idc_dictionary(self.networkx_graph) + self.path_to_pz_idxs = [get_idx_from_idc(self.idc_dict, edge) for edge in self.path_to_pz] + self.path_from_pz_idxs = [get_idx_from_idc(self.idc_dict, edge) for edge in self.path_from_pz] + + # create lookup dictionaries for rest of path to and from processing zone + self.rest_of_path_to_pz = {edge: self.path_to_pz[i + 1 :] for i, edge in enumerate(self.path_to_pz)} + self.rest_of_path_from_pz = {edge: self.path_from_pz[i + 1 :] for i, edge in enumerate(self.path_from_pz)} + + self.pz_edges_idx = [ + get_idx_from_idc(self.idc_dict, edge) + for edge in self.networkx_graph.edges() + if nx.get_edge_attributes(self.networkx_graph, "edge_type")[edge] != "trap" + ] + + def create_graph(self): + self.m_extended = self.m + (self.ion_chain_size_vertical - 1) * (self.m - 1) + self.n_extended = self.n + (self.ion_chain_size_horizontal - 1) * (self.n - 1) + self.num_edges = self.n // 2 + + networkx_graph = nx.grid_2d_graph(self.m_extended, self.n_extended) + self._set_trap_nodes(networkx_graph) + self._remove_horizontal_edges(networkx_graph) + self._remove_vertical_edges(networkx_graph) + self._remove_horizontal_nodes(networkx_graph) + self._set_junction_nodes(networkx_graph) + nx.set_edge_attributes(networkx_graph, "trap", "edge_type") + self._set_processing_zone(networkx_graph) + + return networkx_graph + + def _set_trap_nodes(self, networkx_graph): + for node in networkx_graph.nodes(): + networkx_graph.add_node(node, node_type="trap_node", color="b") + + def _remove_horizontal_edges(self, networkx_graph): + for i in range(0, self.m_extended - self.ion_chain_size_vertical, self.ion_chain_size_vertical): + for k in range(1, self.ion_chain_size_vertical): + for j in range(self.n_extended - 1): + networkx_graph.remove_edge((i + k, j), (i + k, j + 1)) + + def _remove_vertical_edges(self, networkx_graph): + for i in range(0, self.n_extended - self.ion_chain_size_horizontal, self.ion_chain_size_horizontal): + for k in range(1, self.ion_chain_size_horizontal): + for j in range(self.m_extended - 1): + networkx_graph.remove_edge((j, i + k), (j + 1, i + k)) + + def _remove_horizontal_nodes(self, networkx_graph): + for i in range(0, self.m_extended - self.ion_chain_size_vertical, self.ion_chain_size_vertical): + for k in range(1, self.ion_chain_size_vertical): + for j in range(0, self.n_extended - self.ion_chain_size_horizontal, self.ion_chain_size_horizontal): + for s in range(1, self.ion_chain_size_horizontal): + networkx_graph.remove_node((i + k, j + s)) + + def _set_junction_nodes(self, networkx_graph): + for i in range(0, self.m_extended, self.ion_chain_size_vertical): + for j in range(0, self.n_extended, self.ion_chain_size_horizontal): + networkx_graph.add_node((i, j), node_type="junction_node", color="g") + + def _set_processing_zone(self, networkx_graph): + # Define the key nodes + self.exit = (self.m_extended - 1, self.n_extended - 1) + self.processing_zone = (self.m_extended + self.num_edges - 1, self.n_extended + self.num_edges - 1) + self.entry = (self.m_extended - 1, 0) + self.parking_node = (self.processing_zone[0] + 1, self.processing_zone[1]) + self.parking_edge = (self.processing_zone, self.parking_node) + + # differences + dy_exit = self.exit[1] - self.processing_zone[1] + dy_entry = self.processing_zone[1] - self.entry[1] + + self.path_to_pz = [] + self.path_from_pz = [] + + # Add exit edges + for i in range(self.num_edges): + exit_node = (self.exit[0] + (i + 1), self.exit[1] - (i + 1) * dy_exit / self.num_edges) + + if i == 0: + networkx_graph.add_node(exit_node, node_type="exit_node", color="y") + previous_exit_node = self.exit + self.exit_edge = (previous_exit_node, exit_node) + + networkx_graph.add_node(exit_node, node_type="exit_connection_node", color="y") + networkx_graph.add_edge(previous_exit_node, exit_node, edge_type="exit", color="k") + self.path_to_pz.append((previous_exit_node, exit_node)) + previous_exit_node = exit_node + + # Add entry edges + for i in range(self.num_edges): + entry_node = (self.entry[0] + (i + 1), self.entry[1] + (i + 1) * dy_entry / self.num_edges) + + if i == 0: + networkx_graph.add_node(entry_node, node_type="entry_node", color="orange") + previous_entry_node = self.entry + self.entry_edge = (previous_entry_node, entry_node) + + networkx_graph.add_node(entry_node, node_type="entry_connection_node", color="orange") + # first entry connection is first edge after pz + # entry is edge connected to memory grid, so last entry connection + # if entry is one edge only -> first entry connection is the same as entry edge + if entry_node == self.processing_zone: + self.first_entry_connection_from_pz = (entry_node, previous_entry_node) + networkx_graph.add_edge(previous_entry_node, entry_node, edge_type="first_entry_connection", color="k") + else: + networkx_graph.add_edge(previous_entry_node, entry_node, edge_type="entry", color="k") + self.path_from_pz.insert(0, (entry_node, previous_entry_node)) + + previous_entry_node = entry_node + + assert exit_node == entry_node, "Exit and entry do not end in same node" + assert exit_node == self.processing_zone, "Exit and entry do not end in processing zone" + + # Add the processing zone node + networkx_graph.add_node(self.processing_zone, node_type="processing_zone_node", color="r") + + # new parking edge + networkx_graph.add_node(self.parking_node, node_type="parking_node", color="r") + networkx_graph.add_edge(self.parking_edge[0], self.parking_edge[1], edge_type="parking_edge", color="g") + + def get_graph(self): + return self.networkx_graph + + # plotting + def plot_state(self, ion_moves, labels, plot_ions=True, show_plot=False, save_plot=False, filename=""): + # idc_dict = create_idc_dicitonary(nx_G) + pos = {(x, y): (y, -x) for i, (x, y) in enumerate(list(self.networkx_graph.nodes()))} + if plot_ions is True: + pass + # edge_labels = nx.get_edge_attributes(self.networkx_graph,'ion_chain') + else: + edge_labels = {} + for idc in self.networkx_graph.edges(): + # pass + edge_labels[idc] = "$e_{%s}$" % get_idx_from_idc(self.idc_dict, idc) + + for edge_idc in self.networkx_graph.edges(): + # color all edges black + self.networkx_graph.add_edge(edge_idc[0], edge_idc[1], color="k") + + ion_holder = {} + colors = [] + np.random.seed(0) + for _ in range(len(ion_moves)): + r = np.round(np.random.rand(), 1) + g = np.round(np.random.rand(), 1) + b = np.round(np.random.rand(), 1) + + colors.append((r, g, b)) + np.random.seed() + + for i, ion_place in enumerate(ion_moves): + ion_edge_idc = get_idc_from_idx(self.idc_dict, ion_place) + try: + ion_holder[ion_place].append(i) + except KeyError: + ion_holder[ion_place] = [i] + for i, ion_place in enumerate(ion_moves): + ion_edge_idc = get_idc_from_idx(self.idc_dict, ion_place) + self.networkx_graph.add_edge( + ion_edge_idc[0], ion_edge_idc[1], ion_chain=ion_holder[ion_place], color=colors[i] + ) + + edge_color = nx.get_edge_attributes(self.networkx_graph, "color").values() + node_color = list(nx.get_node_attributes(self.networkx_graph, "color").values()) + edge_labels = nx.get_edge_attributes(self.networkx_graph, "ion_chain") + + # plt.figure(figsize=(25, 15)) + plt.figure(figsize=(15, 8)) + nx.draw_networkx( + self.networkx_graph, + pos=pos, + with_labels=True, + node_size=300, + node_color=node_color, + width=8, + edge_color=edge_color, + font_size=6, + ) + nx.draw_networkx_edge_labels(self.networkx_graph, pos, edge_labels) + + # reset edge labels + for i, ion in enumerate(ion_moves): + ion_edge_idc = get_idc_from_idx(self.idc_dict, ion) + self.networkx_graph.add_edge(ion_edge_idc[0], ion_edge_idc[1], ion_chain="", color=colors[i]) + + labels0, labels1 = labels + plt.plot([], [], label=labels0) + plt.plot([], [], label=labels1) + plt.legend() + + if show_plot is True: + plt.show() + + if save_plot is True: + plt.savefig(filename) + plt.close() + + +class MemoryZone: + def __init__( + self, + m, + n, + v, + h, + starting_config, + max_timestep, + max_num_parking, + time_2qubit_gate=2, + time_1qubit_gate=1, + ): + # new graph MZ + self.mz_Graph_creator = MZGraphCreator(m, n, v, h) + self.mz_graph = self.mz_Graph_creator.get_graph() + + self.graph_creator = GraphCreator(m, n, v, h) + self.graph = self.graph_creator.get_graph() + self.starting_config = starting_config + self.max_timestep = max_timestep + self.max_num_parking = max_num_parking + self.time_2qubit_gate = time_2qubit_gate + self.time_1qubit_gate = time_1qubit_gate + self.num_ion_chains = len(starting_config) + self.idc_dict = self.graph_creator.idc_dict + + # create dictionary with all distances to entry + self.dist_dict = {} + for edge_idc in self.graph.edges(): + # keep node ordering consistent: + edge_idx = get_idx_from_idc(self.idc_dict, edge_idc) + self.dist_dict[get_idc_from_idx(self.idc_dict, edge_idx)] = calc_dist_to_pz( + self.graph_creator, get_idx_from_idc(self.idc_dict, edge_idc) + ) + + # create dictionary with all distances to entry for all nodes + self.dist_dict_nodes = {} + for node in self.graph.nodes(): + self.dist_dict_nodes[node] = len(get_path_to_node(self.graph, node, self.graph_creator.processing_zone)) + + # # create dictionary with all paths to entry (TODO artifact?) + # self.path_dict = {} + # for edge_idc in self.graph.edges(): + # self.path_dict[edge_idc] = calc_dist_to_pz(self.graph_creator, get_idx_from_idc(self.idc_dict, edge_idc)) + + self.ion_chains = self.starting_config.copy() + + self.junction_nodes = [ + node + for node in self.graph.nodes() + if ( + nx.get_node_attributes(self.graph, "node_type")[node] + in ("junction_node", "exit_node", "exit_connection_node", "entry_node", "entry_connection_node") + ) + ] + + self.path_entry_to_exit = get_path_to_node( + self.graph, self.graph_creator.entry, self.graph_creator.exit, exclude_first_entry_connection=True + ) + + # precalulculate bfs for top left and exit + self.bfs_top_left = nx.edge_bfs(self.mz_graph, (0, 0)) + self.bfs_exit = nx.edge_bfs(self.mz_graph, self.graph_creator.exit) + + # get edge idxs of ion chains + def get_state_idxs(self): + ion_chains_idx = [] + for chain in self.ion_chains.values(): + ion_chains_idx.append(get_idx_from_idc(self.idc_dict, chain)) + self.state_idxs = ion_chains_idx + return ion_chains_idx + + # calc distance to parking edge for all ion chains + def update_distance_map(self): + self.distance_map = {} + for ion_chain, edge_idx in enumerate(self.get_state_idxs()): + self.distance_map[ion_chain] = self.dist_dict[get_idc_from_idx(self.idc_dict, edge_idx)] + + def count_chains_in_pz(self): + return len([chain_idx for chain_idx in self.get_state_idxs() if chain_idx in self.graph_creator.pz_edges_idx]) + + def count_chains_in_exit(self): + return len( + [chain_idx for chain_idx in self.get_state_idxs() if chain_idx in self.graph_creator.path_to_pz_idxs] + ) + + def count_chains_in_parking(self): + return len( + [ + chain_idx + for chain_idx in self.get_state_idxs() + if chain_idx == get_idx_from_idc(self.idc_dict, self.graph_creator.parking_edge) + ] + ) + + def find_chain_in_edge(self, edge_idc): + chains = [ + ion + for ion, chain_idx in enumerate(self.get_state_idxs()) + if chain_idx == get_idx_from_idc(self.idc_dict, edge_idc) + ] + assert ( + len(chains) <= 1 + ), f"more than one chain ({chains}) in edge {edge_idc}, if parking edge -> use find_chains_in_parking()" + if len(chains) == 0: + return None + return chains[0] + + def find_chains_in_parking(self): + return [ + ion + for ion, chain_idx in enumerate(self.get_state_idxs()) + if chain_idx == get_idx_from_idc(self.idc_dict, self.graph_creator.parking_edge) + ] + + def find_next_edge(self, edge_idc, towards=(0, 0)): + ### find next edge given edge_idc of ion chain + + # if in entry connection -> move to next edge + for i, edge_idx in enumerate(self.graph_creator.path_from_pz_idxs[:-1]): + if get_idx_from_idc(self.idc_dict, edge_idc) == edge_idx: + return get_idc_from_idx(self.idc_dict, self.graph_creator.path_from_pz_idxs[i + 1]) + + if get_idx_from_idc(self.idc_dict, edge_idc) == get_idx_from_idc(self.idc_dict, self.graph_creator.entry_edge): + if towards == (0, 0): + next_edge = next( + edge + for edge in self.graph.edges(self.graph_creator.entry) + if edge not in (self.graph_creator.entry_edge, self.path_entry_to_exit[0]) + ) + elif towards == "exit": + next_edge = self.path_entry_to_exit[0] + else: + msg = "towards must be (0,0) or 'exit'" + raise ValueError(msg) + + # assert that next edge after entry is not entry or exit + assert get_idx_from_idc(self.idc_dict, next_edge) != get_idx_from_idc( + self.idc_dict, self.graph_creator.exit_edge + ) + assert get_idx_from_idc(self.idc_dict, next_edge) != get_idx_from_idc( + self.idc_dict, self.graph_creator.entry_edge + ) + return next_edge + + # if in parking space + if get_idx_from_idc(self.idc_dict, edge_idc) == get_idx_from_idc( + self.idc_dict, self.graph_creator.parking_edge + ): + return self.graph_creator.parking_edge + + # find shortest path from both sides for all other edges + path0 = nx.shortest_path( + self.graph, + edge_idc[0], + self.graph_creator.parking_node, + lambda _, __, edge_attr_dict: (edge_attr_dict["edge_type"] == "first_entry_connection") * 1e8 + 1, + ) + path1 = nx.shortest_path( + self.graph, + edge_idc[1], + self.graph_creator.parking_node, + lambda _, __, edge_attr_dict: (edge_attr_dict["edge_type"] == "first_entry_connection") * 1e8 + 1, + ) + + # create chains in correct order -> chains are path from outer node to other outer node + # start with outer node that is farther away from processing zone (longer path) + # end with closer outer node (shorter path) + if len(path1) < len(path0): + next_edge = (path1[0], path1[1]) + # make next_edge_idc consistent + next_edge_idx = get_idx_from_idc(self.idc_dict, next_edge) + return get_idc_from_idx(self.idc_dict, next_edge_idx) + + next_edge = (path0[0], path0[1]) + # make next_edge_idc consistent + next_edge_idx = get_idx_from_idc(self.idc_dict, next_edge) + return get_idc_from_idx(self.idc_dict, next_edge_idx) + + def find_ordered_edges(self, edge1, edge2): + # Find the common node shared between the two edges + common_node = set(edge1).intersection(set(edge2)) + + if len(common_node) != 1 and edge1 != edge2: + msg = f"The input edges are not connected. Edges: {edge1}, {edge2}" + raise ValueError(msg) + + common_node = common_node.pop() + if edge1[0] == common_node: + edge1_in_order = (edge1[1], common_node) + edge2_in_order = (common_node, edge2[1]) if edge2[0] == common_node else (common_node, edge2[0]) + else: + edge1_in_order = (edge1[0], common_node) + edge2_in_order = (common_node, edge2[1]) if edge2[0] == common_node else (common_node, edge2[0]) + + # new if same edge twice don't change order + if get_idx_from_idc(self.idc_dict, edge1_in_order) == get_idx_from_idc(self.idc_dict, edge2_in_order): + edge2_in_order = edge1_in_order + + return edge1_in_order, edge2_in_order + + def have_common_junction_node(self, edge1, edge2): + # Extract nodes from the edges + nodes_edge1 = set(edge1) + nodes_edge2 = set(edge2) + # TODO can change to self.junction_nodes? + all_junctions = [ + *self.junction_nodes, + self.graph_creator.processing_zone, + self.graph_creator.entry, + self.graph_creator.exit, + ] + + # Check if the edges have any common junction nodes + common_junction_nodes = nodes_edge1.intersection(nodes_edge2).intersection(all_junctions) + + return len(common_junction_nodes) == 1 + + def create_outer_circle(self, edge_idc, next_edge, other_next_edges, towards=(0, 0)): + # move from entry to memory zone + if get_idx_from_idc(self.idc_dict, edge_idc) == get_idx_from_idc( + self.idc_dict, self.graph_creator.entry_edge + ): # in self.graph_creator.path_from_pz_idxs: + target_edge = self.bfs_free_edge(towards, other_next_edges) + # calc path to target edge + path0 = get_path_to_node( + self.graph, + self.graph_creator.processing_zone, + target_edge[0], + exclude_exit=True, + exclude_first_entry_connection=False, + ) + path1 = get_path_to_node( + self.graph, + self.graph_creator.processing_zone, + target_edge[1], + exclude_exit=True, + exclude_first_entry_connection=False, + ) + if len(path1) > len(path0): + edge_path = [*path0, (target_edge[0], target_edge[1])] + else: + edge_path = [*path1, (target_edge[1], target_edge[0])] + return edge_path + + # circles within memory zone + node_path = nx.shortest_path( + self.graph, + next_edge[1], + edge_idc[0], + lambda node0, node1, _: [ + 1e8 + if ( + get_idx_from_idc(self.idc_dict, (node0, node1)) == get_idx_from_idc(self.idc_dict, edge_idc) + or get_idx_from_idc(self.idc_dict, (node0, node1)) == get_idx_from_idc(self.idc_dict, next_edge) + or get_idx_from_idc(self.idc_dict, (node0, node1)) + == get_idx_from_idc(self.idc_dict, self.graph_creator.entry_edge) + ) + else 1 + ][0], + ) + edge_path = [] + for edge in pairwise(node_path): + edge_path.append(edge) + + return [edge_idc, next_edge, *edge_path, edge_idc] + + def check_if_edge_is_filled(self, edge_idc): + return get_idx_from_idc(self.idc_dict, edge_idc) in self.get_state_idxs() + + def find_nonfree_and_free_circle_idxs(self, circles_dict): + # careful! If only two edges -> second edge must always be free! (could also be parking edge, because PE can store multiple) + junction_nodes = [*self.junction_nodes, self.graph_creator.processing_zone] + combinations_of_circles = list(distinct_combinations(circles_dict.keys(), 2)) + + def get_circle_nodes(circle): + # if next edge is free -> circle is just two edges -> can skip first and last node + if len(circles_dict[circle]) == 2: + if circles_dict[circle][0] != circles_dict[circle][1]: + circle_or_path = [(circles_dict[circle][0][1], circles_dict[circle][1][0])] + assert ( + circles_dict[circle][0][1] == circles_dict[circle][1][0] + ), "circle is not two edges? Middle node should be the same" + # if middle node is exit or exit connection -> skip also middle node -> can always push through to parking edge + # TODO unskip + # if ( + # nx.get_node_attributes(self.graph, "node_type")[circles_dict[circle][0][1]] in ("exit_node", "exit_connection_node") + # ): + # circle_or_path = [] + + # new if same edge twice is parking edge -> skip completely + elif get_idx_from_idc(self.idc_dict, circles_dict[circle][0]) == get_idx_from_idc( + self.idc_dict, self.graph_creator.parking_edge + ): + # if self.count_chains_in_parking() >= self.max_num_parking: + # circle_or_path = [(circles_dict[circle][0][0], circles_dict[circle][0][0])] + # else: + circle_or_path = [] + else: # else if path is same edge twice skip (but of course keep first node -> no movement into this edge) + circle_or_path = [(circles_dict[circle][0][0], circles_dict[circle][0][0])] + # if circle is real circle -> need to check all nodes + elif circles_dict[circle][0] == circles_dict[circle][-1]: + circle_or_path = circles_dict[circle] + + # if circle is only a path -> can skip first and last node + # extra clause for when there is a stop at the end? -> if last two edges are same -> skip last two edges? + elif circles_dict[circle][-1] == circles_dict[circle][-2]: + circle_or_path = circles_dict[circle][1:-2] + else: + circle_or_path = circles_dict[circle][1:-1] + nodes = set() + for edge in circle_or_path: + node1, node2 = edge + if node1 == node2: + nodes.add(node1) + else: + nodes.add(node1) + nodes.add(node2) + return nodes + + junction_shared_pairs = [] + for circle1, circle2 in combinations_of_circles: + nodes1 = get_circle_nodes(circle1) + nodes2 = get_circle_nodes(circle2) + + # following clause is only to allow some cases that the assert would stop + if ( + len(nodes1) != 0 + and len(nodes2) != 0 + and get_idx_from_idc(self.idc_dict, circles_dict[circle1][-1]) + != get_idx_from_idc(self.idc_dict, self.graph_creator.parking_edge) + and not ( + len(nodes1.intersection(nodes2).intersection(junction_nodes)) > 0 + and self.graph_creator.processing_zone not in nodes1.intersection(nodes2) + ) + # added new clause that it is allowed if they block each other (this is the if statement below, that adds the circles to junction_shared_pairs and thus the first blocks the second) + ): + # assert that circles don't end in same edge (just sanity check at this point - exceptions are added in if clause above after being checked) + assert get_idx_from_idc(self.idc_dict, circles_dict[circle1][-1]) != ( + get_idx_from_idc(self.idc_dict, circles_dict[circle2][-1]) + ), "circles end in same edge, was in if statement below as: or (get_idx_from_idc(self.idc_dict, circles_dict[circle1][-1]) == (get_idx_from_idc(self.idc_dict, circles_dict[circle2][-1]))), -> problem with circles: {}, {}".format( + circles_dict[circle1], circles_dict[circle2] + ) + # new: exclude processing zone node -> if pz node in circles -> can both be executed (TODO check again for moves out of pz) + if len( + nodes1.intersection(nodes2).intersection(junction_nodes) + ) > 0 and self.graph_creator.processing_zone not in nodes1.intersection(nodes2): + junction_shared_pairs.append((circle1, circle2)) + + free_circle_combs = [ + circle_idx_pair + for circle_idx_pair in combinations_of_circles + if (circle_idx_pair not in junction_shared_pairs) + ] + + return junction_shared_pairs, free_circle_combs + + # change: if list in other list -> take longer list, delete other + # if list can be connected to other list -> combine and delete both + + def rotate(self, full_circle_idxs, plot=False): + # create dictionary of state + # convert keys to values and vice versa, so one can iterate over the path (positions need to be keys here) + edge_state_dict = {} + for ion, edge in self.ion_chains.items(): + edge_state_dict[get_idx_from_idc(self.idc_dict, edge)] = ion + + new_edge_state_dict = {} + for edge_bef, edge_aft in pairwise(full_circle_idxs): + try: + new_edge_state_dict[edge_aft] = edge_state_dict[edge_bef] + del edge_state_dict[edge_bef] + except KeyError: + continue + + # change ion chains + for idx, ion in new_edge_state_dict.items(): + self.ion_chains[ion] = get_idc_from_idx(self.idc_dict, idx) + + if plot is True: + self.graph_creator.plot_state( + [get_idx_from_idc(self.idc_dict, edge_idc) for edge_idc in self.ion_chains.values()], show_plot=True + ) + + return new_edge_state_dict + + def bfs_free_edge(self, node, other_next_edges): + state_idxs = self.get_state_idxs() + # if node == (0, 0): + # for edge_idc in self.bfs_top_left: + # if get_idx_from_idc(self.idc_dict, edge_idc) not in state_idxs: + # return edge_idc + # elif node == self.graph_creator.exit: + + # for i in list(self.bfs_exit): + + # for s in nx.edge_bfs(self.mz_graph, self.graph_creator.exit): + + # for edge_idc in self.bfs_exit: + + # if get_idx_from_idc(self.idc_dict, edge_idc) not in state_idxs: + # return edge_idc + # else: + # for edge_idc in nx.edge_bfs(self.mz_graph, node): + # if get_idx_from_idc(self.idc_dict, edge_idc) not in state_idxs: + # return edge_idc + other_next_edges_idxs = [get_idx_from_idc(self.idc_dict, next_edge) for next_edge in other_next_edges] + for edge_idc in nx.edge_bfs(self.mz_graph, node): + if ( + get_idx_from_idc(self.idc_dict, edge_idc) not in state_idxs + and get_idx_from_idc(self.idc_dict, edge_idc) not in other_next_edges_idxs + ): + return edge_idc + return None + + # def combine_paths_over_pz(self, path0, path1): + # # combines paths over processing zone + # # always adds start of path1 to path0 + # # -> end of combined path is end of path0 (even if path1 would have different end (very unlikely edge case + # # (next edge is free for path0, path1 takes neighbour edge of that free next edge, since bfs search starts at top of graph))) + + # # new: if path0 doesn't start at processing zone -> was already combined with other chain -> extract path after processing zone (path0[1:]) + # if path0[0][0] != self.graph_creator.processing_zone: + # # extract path after self.graph_creator.processing_zone + # assert path0[1][0] == self.graph_creator.processing_zone + # path_from_pz = path0[1:] + # else: + # path_from_pz = path0 + + # path_to_pz = get_path_to_node( + # self.graph, + # path1[0][0], + # self.graph_creator.processing_zone, + # exclude_first_entry_connection=False, + # exclude_exit=False, + # ) + # return path_to_pz + path_from_pz + + # def find_least_import_chain_in_pz(self, seq, ions_in_pz): + # for num in seq: + # if num in ions_in_pz: + # ions_in_pz.remove(num) + # if len(ions_in_pz) == 1: + # return ions_in_pz[0] + # print(ions_in_pz) + # return ions_in_pz[-1] + + def find_least_import_chain_in_parking(self, seq, ions_in_parking): + for num in seq: + if num in ions_in_parking: + ions_in_parking.remove(num) + if len(ions_in_parking) == 1: + return ions_in_parking[0] + return ions_in_parking[-1] diff --git a/QASM_files/full_register_access_06.qasm b/QASM_files/full_register_access_06.qasm new file mode 100644 index 0000000..d75a5c4 --- /dev/null +++ b/QASM_files/full_register_access_06.qasm @@ -0,0 +1,10 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[50]; + +h q[0]; +h q[1]; +h q[2]; +h q[3]; +h q[4]; +h q[5]; diff --git a/QASM_files/full_register_access_50.qasm b/QASM_files/full_register_access_50.qasm new file mode 100644 index 0000000..6296bc3 --- /dev/null +++ b/QASM_files/full_register_access_50.qasm @@ -0,0 +1,55 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[50]; + +h q[0]; +h q[1]; +h q[2]; +h q[3]; +h q[4]; +h q[5]; +h q[6]; +h q[7]; +h q[8]; +h q[9]; +h q[10]; +h q[11]; +h q[12]; +h q[13]; +h q[14]; +h q[15]; +h q[16]; +h q[17]; +h q[18]; +h q[19]; +h q[20]; +h q[21]; +h q[22]; +h q[23]; +h q[24]; +h q[25]; +h q[26]; +h q[27]; +h q[28]; +h q[29]; +h q[30]; +h q[31]; +h q[32]; +h q[33]; +h q[34]; +h q[35]; +h q[36]; +h q[37]; +h q[38]; +h q[39]; +h q[40]; +h q[41]; +h q[42]; +h q[43]; +h q[44]; +h q[45]; +h q[46]; +h q[47]; +h q[48]; +h q[49]; + diff --git a/QASM_files/ghz_nativegates_quantinuum_tket_50.qasm b/QASM_files/ghz_nativegates_quantinuum_tket_50.qasm new file mode 100644 index 0000000..614135f --- /dev/null +++ b/QASM_files/ghz_nativegates_quantinuum_tket_50.qasm @@ -0,0 +1,991 @@ +// Benchmark was created by MQT Bench on 2023-06-29 +// For more information about MQT Bench, please visit https://www.cda.cit.tum.de/mqtbench/ +// MQT Bench version: v1.0.0 +// TKET version: 1.16.0 +// Used Gate Set: ['rz', 'ry', 'rx', 'rzz', 'measure'] + +OPENQASM 2.0; +include "qelib1.inc"; + +qreg q[50]; +creg meas[50]; +rz(1.0*pi) q[0]; +rz(1.0*pi) q[1]; +rz(1.0*pi) q[2]; +rz(1.0*pi) q[3]; +rz(1.0*pi) q[4]; +rz(1.0*pi) q[5]; +rz(1.0*pi) q[6]; +rz(1.0*pi) q[7]; +rz(1.0*pi) q[8]; +rz(1.0*pi) q[9]; +rz(1.0*pi) q[10]; +rz(1.0*pi) q[11]; +rz(1.0*pi) q[12]; +rz(1.0*pi) q[13]; +rz(1.0*pi) q[14]; +rz(1.0*pi) q[15]; +rz(1.0*pi) q[16]; +rz(1.0*pi) q[17]; +rz(1.0*pi) q[18]; +rz(1.0*pi) q[19]; +rz(1.0*pi) q[20]; +rz(1.0*pi) q[21]; +rz(1.0*pi) q[22]; +rz(1.0*pi) q[23]; +rz(1.0*pi) q[24]; +rz(1.0*pi) q[25]; +rz(1.0*pi) q[26]; +rz(1.0*pi) q[27]; +rz(1.0*pi) q[28]; +rz(1.0*pi) q[29]; +rz(1.0*pi) q[30]; +rz(1.0*pi) q[31]; +rz(1.0*pi) q[32]; +rz(1.0*pi) q[33]; +rz(1.0*pi) q[34]; +rz(1.0*pi) q[35]; +rz(1.0*pi) q[36]; +rz(1.0*pi) q[37]; +rz(1.0*pi) q[38]; +rz(1.0*pi) q[39]; +rz(1.0*pi) q[40]; +rz(1.0*pi) q[41]; +rz(1.0*pi) q[42]; +rz(1.0*pi) q[43]; +rz(1.0*pi) q[44]; +rz(1.0*pi) q[45]; +rz(1.0*pi) q[46]; +rz(1.0*pi) q[47]; +rz(1.0*pi) q[48]; +rx(0.5*pi) q[49]; +rx(3.5*pi) q[0]; +rx(3.5*pi) q[1]; +rx(3.5*pi) q[2]; +rx(3.5*pi) q[3]; +rx(3.5*pi) q[4]; +rx(3.5*pi) q[5]; +rx(3.5*pi) q[6]; +rx(3.5*pi) q[7]; +rx(3.5*pi) q[8]; +rx(3.5*pi) q[9]; +rx(3.5*pi) q[10]; +rx(3.5*pi) q[11]; +rx(3.5*pi) q[12]; +rx(3.5*pi) q[13]; +rx(3.5*pi) q[14]; +rx(3.5*pi) q[15]; +rx(3.5*pi) q[16]; +rx(3.5*pi) q[17]; +rx(3.5*pi) q[18]; +rx(3.5*pi) q[19]; +rx(3.5*pi) q[20]; +rx(3.5*pi) q[21]; +rx(3.5*pi) q[22]; +rx(3.5*pi) q[23]; +rx(3.5*pi) q[24]; +rx(3.5*pi) q[25]; +rx(3.5*pi) q[26]; +rx(3.5*pi) q[27]; +rx(3.5*pi) q[28]; +rx(3.5*pi) q[29]; +rx(3.5*pi) q[30]; +rx(3.5*pi) q[31]; +rx(3.5*pi) q[32]; +rx(3.5*pi) q[33]; +rx(3.5*pi) q[34]; +rx(3.5*pi) q[35]; +rx(3.5*pi) q[36]; +rx(3.5*pi) q[37]; +rx(3.5*pi) q[38]; +rx(3.5*pi) q[39]; +rx(3.5*pi) q[40]; +rx(3.5*pi) q[41]; +rx(3.5*pi) q[42]; +rx(3.5*pi) q[43]; +rx(3.5*pi) q[44]; +rx(3.5*pi) q[45]; +rx(3.5*pi) q[46]; +rx(3.5*pi) q[47]; +rx(3.5*pi) q[48]; +rz(0.5*pi) q[49]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[3]; +rz(0.5*pi) q[4]; +rz(0.5*pi) q[5]; +rz(0.5*pi) q[6]; +rz(0.5*pi) q[7]; +rz(0.5*pi) q[8]; +rz(0.5*pi) q[9]; +rz(0.5*pi) q[10]; +rz(0.5*pi) q[11]; +rz(0.5*pi) q[12]; +rz(0.5*pi) q[13]; +rz(0.5*pi) q[14]; +rz(0.5*pi) q[15]; +rz(0.5*pi) q[16]; +rz(0.5*pi) q[17]; +rz(0.5*pi) q[18]; +rz(0.5*pi) q[19]; +rz(0.5*pi) q[20]; +rz(0.5*pi) q[21]; +rz(0.5*pi) q[22]; +rz(0.5*pi) q[23]; +rz(0.5*pi) q[24]; +rz(0.5*pi) q[25]; +rz(0.5*pi) q[26]; +rz(0.5*pi) q[27]; +rz(0.5*pi) q[28]; +rz(0.5*pi) q[29]; +rz(0.5*pi) q[30]; +rz(0.5*pi) q[31]; +rz(0.5*pi) q[32]; +rz(0.5*pi) q[33]; +rz(0.5*pi) q[34]; +rz(0.5*pi) q[35]; +rz(0.5*pi) q[36]; +rz(0.5*pi) q[37]; +rz(0.5*pi) q[38]; +rz(0.5*pi) q[39]; +rz(0.5*pi) q[40]; +rz(0.5*pi) q[41]; +rz(0.5*pi) q[42]; +rz(0.5*pi) q[43]; +rz(0.5*pi) q[44]; +rz(0.5*pi) q[45]; +rz(0.5*pi) q[46]; +rz(0.5*pi) q[47]; +rz(0.5*pi) q[48]; +rx(0.5*pi) q[49]; +rx(0.5*pi) q[0]; +rx(0.5*pi) q[1]; +rx(0.5*pi) q[2]; +rx(0.5*pi) q[3]; +rx(0.5*pi) q[4]; +rx(0.5*pi) q[5]; +rx(0.5*pi) q[6]; +rx(0.5*pi) q[7]; +rx(0.5*pi) q[8]; +rx(0.5*pi) q[9]; +rx(0.5*pi) q[10]; +rx(0.5*pi) q[11]; +rx(0.5*pi) q[12]; +rx(0.5*pi) q[13]; +rx(0.5*pi) q[14]; +rx(0.5*pi) q[15]; +rx(0.5*pi) q[16]; +rx(0.5*pi) q[17]; +rx(0.5*pi) q[18]; +rx(0.5*pi) q[19]; +rx(0.5*pi) q[20]; +rx(0.5*pi) q[21]; +rx(0.5*pi) q[22]; +rx(0.5*pi) q[23]; +rx(0.5*pi) q[24]; +rx(0.5*pi) q[25]; +rx(0.5*pi) q[26]; +rx(0.5*pi) q[27]; +rx(0.5*pi) q[28]; +rx(0.5*pi) q[29]; +rx(0.5*pi) q[30]; +rx(0.5*pi) q[31]; +rx(0.5*pi) q[32]; +rx(0.5*pi) q[33]; +rx(0.5*pi) q[34]; +rx(0.5*pi) q[35]; +rx(0.5*pi) q[36]; +rx(0.5*pi) q[37]; +rx(0.5*pi) q[38]; +rx(0.5*pi) q[39]; +rx(0.5*pi) q[40]; +rx(0.5*pi) q[41]; +rx(0.5*pi) q[42]; +rx(0.5*pi) q[43]; +rx(0.5*pi) q[44]; +rx(0.5*pi) q[45]; +rx(0.5*pi) q[46]; +rx(0.5*pi) q[47]; +rx(0.5*pi) q[48]; +rz(0.5*pi) q[49]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[3]; +rz(0.5*pi) q[4]; +rz(0.5*pi) q[5]; +rz(0.5*pi) q[6]; +rz(0.5*pi) q[7]; +rz(0.5*pi) q[8]; +rz(0.5*pi) q[9]; +rz(0.5*pi) q[10]; +rz(0.5*pi) q[11]; +rz(0.5*pi) q[12]; +rz(0.5*pi) q[13]; +rz(0.5*pi) q[14]; +rz(0.5*pi) q[15]; +rz(0.5*pi) q[16]; +rz(0.5*pi) q[17]; +rz(0.5*pi) q[18]; +rz(0.5*pi) q[19]; +rz(0.5*pi) q[20]; +rz(0.5*pi) q[21]; +rz(0.5*pi) q[22]; +rz(0.5*pi) q[23]; +rz(0.5*pi) q[24]; +rz(0.5*pi) q[25]; +rz(0.5*pi) q[26]; +rz(0.5*pi) q[27]; +rz(0.5*pi) q[28]; +rz(0.5*pi) q[29]; +rz(0.5*pi) q[30]; +rz(0.5*pi) q[31]; +rz(0.5*pi) q[32]; +rz(0.5*pi) q[33]; +rz(0.5*pi) q[34]; +rz(0.5*pi) q[35]; +rz(0.5*pi) q[36]; +rz(0.5*pi) q[37]; +rz(0.5*pi) q[38]; +rz(0.5*pi) q[39]; +rz(0.5*pi) q[40]; +rz(0.5*pi) q[41]; +rz(0.5*pi) q[42]; +rz(0.5*pi) q[43]; +rz(0.5*pi) q[44]; +rz(0.5*pi) q[45]; +rz(0.5*pi) q[46]; +rz(0.5*pi) q[47]; +rz(0.5*pi) q[48]; +rzz(0.5*pi) q[49],q[48]; +rz(0.5*pi) q[48]; +rz(0.5*pi) q[49]; +rx(0.5*pi) q[48]; +rx(0.5*pi) q[49]; +rz(0.5*pi) q[48]; +rz(0.5*pi) q[49]; +rx(0.5*pi) q[48]; +rz(0.5*pi) q[49]; +rz(0.5*pi) q[48]; +rx(0.5*pi) q[49]; +rz(0.5*pi) q[48]; +rz(0.5*pi) q[49]; +rx(0.5*pi) q[48]; +rz(0.5*pi) q[48]; +rzz(0.5*pi) q[48],q[47]; +rz(0.5*pi) q[47]; +rz(0.5*pi) q[48]; +rx(0.5*pi) q[47]; +rx(0.5*pi) q[48]; +rz(0.5*pi) q[47]; +rz(0.5*pi) q[48]; +rx(0.5*pi) q[47]; +rz(0.5*pi) q[48]; +rz(0.5*pi) q[47]; +rx(0.5*pi) q[48]; +rz(0.5*pi) q[47]; +rz(0.5*pi) q[48]; +rx(0.5*pi) q[47]; +rz(0.5*pi) q[47]; +rzz(0.5*pi) q[47],q[46]; +rz(0.5*pi) q[46]; +rz(0.5*pi) q[47]; +rx(0.5*pi) q[46]; +rx(0.5*pi) q[47]; +rz(0.5*pi) q[46]; +rz(0.5*pi) q[47]; +rx(0.5*pi) q[46]; +rz(0.5*pi) q[47]; +rz(0.5*pi) q[46]; +rx(0.5*pi) q[47]; +rz(0.5*pi) q[46]; +rz(0.5*pi) q[47]; +rx(0.5*pi) q[46]; +rz(0.5*pi) q[46]; +rzz(0.5*pi) q[46],q[45]; +rz(0.5*pi) q[45]; +rz(0.5*pi) q[46]; +rx(0.5*pi) q[45]; +rx(0.5*pi) q[46]; +rz(0.5*pi) q[45]; +rz(0.5*pi) q[46]; +rx(0.5*pi) q[45]; +rz(0.5*pi) q[46]; +rz(0.5*pi) q[45]; +rx(0.5*pi) q[46]; +rz(0.5*pi) q[45]; +rz(0.5*pi) q[46]; +rx(0.5*pi) q[45]; +rz(0.5*pi) q[45]; +rzz(0.5*pi) q[45],q[44]; +rz(0.5*pi) q[44]; +rz(0.5*pi) q[45]; +rx(0.5*pi) q[44]; +rx(0.5*pi) q[45]; +rz(0.5*pi) q[44]; +rz(0.5*pi) q[45]; +rx(0.5*pi) q[44]; +rz(0.5*pi) q[45]; +rz(0.5*pi) q[44]; +rx(0.5*pi) q[45]; +rz(0.5*pi) q[44]; +rz(0.5*pi) q[45]; +rx(0.5*pi) q[44]; +rz(0.5*pi) q[44]; +rzz(0.5*pi) q[44],q[43]; +rz(0.5*pi) q[43]; +rz(0.5*pi) q[44]; +rx(0.5*pi) q[43]; +rx(0.5*pi) q[44]; +rz(0.5*pi) q[43]; +rz(0.5*pi) q[44]; +rx(0.5*pi) q[43]; +rz(0.5*pi) q[44]; +rz(0.5*pi) q[43]; +rx(0.5*pi) q[44]; +rz(0.5*pi) q[43]; +rz(0.5*pi) q[44]; +rx(0.5*pi) q[43]; +rz(0.5*pi) q[43]; +rzz(0.5*pi) q[43],q[42]; +rz(0.5*pi) q[42]; +rz(0.5*pi) q[43]; +rx(0.5*pi) q[42]; +rx(0.5*pi) q[43]; +rz(0.5*pi) q[42]; +rz(0.5*pi) q[43]; +rx(0.5*pi) q[42]; +rz(0.5*pi) q[43]; +rz(0.5*pi) q[42]; +rx(0.5*pi) q[43]; +rz(0.5*pi) q[42]; +rz(0.5*pi) q[43]; +rx(0.5*pi) q[42]; +rz(0.5*pi) q[42]; +rzz(0.5*pi) q[42],q[41]; +rz(0.5*pi) q[41]; +rz(0.5*pi) q[42]; +rx(0.5*pi) q[41]; +rx(0.5*pi) q[42]; +rz(0.5*pi) q[41]; +rz(0.5*pi) q[42]; +rx(0.5*pi) q[41]; +rz(0.5*pi) q[42]; +rz(0.5*pi) q[41]; +rx(0.5*pi) q[42]; +rz(0.5*pi) q[41]; +rz(0.5*pi) q[42]; +rx(0.5*pi) q[41]; +rz(0.5*pi) q[41]; +rzz(0.5*pi) q[41],q[40]; +rz(0.5*pi) q[40]; +rz(0.5*pi) q[41]; +rx(0.5*pi) q[40]; +rx(0.5*pi) q[41]; +rz(0.5*pi) q[40]; +rz(0.5*pi) q[41]; +rx(0.5*pi) q[40]; +rz(0.5*pi) q[41]; +rz(0.5*pi) q[40]; +rx(0.5*pi) q[41]; +rz(0.5*pi) q[40]; +rz(0.5*pi) q[41]; +rx(0.5*pi) q[40]; +rz(0.5*pi) q[40]; +rzz(0.5*pi) q[40],q[39]; +rz(0.5*pi) q[39]; +rz(0.5*pi) q[40]; +rx(0.5*pi) q[39]; +rx(0.5*pi) q[40]; +rz(0.5*pi) q[39]; +rz(0.5*pi) q[40]; +rx(0.5*pi) q[39]; +rz(0.5*pi) q[40]; +rz(0.5*pi) q[39]; +rx(0.5*pi) q[40]; +rz(0.5*pi) q[39]; +rz(0.5*pi) q[40]; +rx(0.5*pi) q[39]; +rz(0.5*pi) q[39]; +rzz(0.5*pi) q[39],q[38]; +rz(0.5*pi) q[38]; +rz(0.5*pi) q[39]; +rx(0.5*pi) q[38]; +rx(0.5*pi) q[39]; +rz(0.5*pi) q[38]; +rz(0.5*pi) q[39]; +rx(0.5*pi) q[38]; +rz(0.5*pi) q[39]; +rz(0.5*pi) q[38]; +rx(0.5*pi) q[39]; +rz(0.5*pi) q[38]; +rz(0.5*pi) q[39]; +rx(0.5*pi) q[38]; +rz(0.5*pi) q[38]; +rzz(0.5*pi) q[38],q[37]; +rz(0.5*pi) q[37]; +rz(0.5*pi) q[38]; +rx(0.5*pi) q[37]; +rx(0.5*pi) q[38]; +rz(0.5*pi) q[37]; +rz(0.5*pi) q[38]; +rx(0.5*pi) q[37]; +rz(0.5*pi) q[38]; +rz(0.5*pi) q[37]; +rx(0.5*pi) q[38]; +rz(0.5*pi) q[37]; +rz(0.5*pi) q[38]; +rx(0.5*pi) q[37]; +rz(0.5*pi) q[37]; +rzz(0.5*pi) q[37],q[36]; +rz(0.5*pi) q[36]; +rz(0.5*pi) q[37]; +rx(0.5*pi) q[36]; +rx(0.5*pi) q[37]; +rz(0.5*pi) q[36]; +rz(0.5*pi) q[37]; +rx(0.5*pi) q[36]; +rz(0.5*pi) q[37]; +rz(0.5*pi) q[36]; +rx(0.5*pi) q[37]; +rz(0.5*pi) q[36]; +rz(0.5*pi) q[37]; +rx(0.5*pi) q[36]; +rz(0.5*pi) q[36]; +rzz(0.5*pi) q[36],q[35]; +rz(0.5*pi) q[35]; +rz(0.5*pi) q[36]; +rx(0.5*pi) q[35]; +rx(0.5*pi) q[36]; +rz(0.5*pi) q[35]; +rz(0.5*pi) q[36]; +rx(0.5*pi) q[35]; +rz(0.5*pi) q[36]; +rz(0.5*pi) q[35]; +rx(0.5*pi) q[36]; +rz(0.5*pi) q[35]; +rz(0.5*pi) q[36]; +rx(0.5*pi) q[35]; +rz(0.5*pi) q[35]; +rzz(0.5*pi) q[35],q[34]; +rz(0.5*pi) q[34]; +rz(0.5*pi) q[35]; +rx(0.5*pi) q[34]; +rx(0.5*pi) q[35]; +rz(0.5*pi) q[34]; +rz(0.5*pi) q[35]; +rx(0.5*pi) q[34]; +rz(0.5*pi) q[35]; +rz(0.5*pi) q[34]; +rx(0.5*pi) q[35]; +rz(0.5*pi) q[34]; +rz(0.5*pi) q[35]; +rx(0.5*pi) q[34]; +rz(0.5*pi) q[34]; +rzz(0.5*pi) q[34],q[33]; +rz(0.5*pi) q[33]; +rz(0.5*pi) q[34]; +rx(0.5*pi) q[33]; +rx(0.5*pi) q[34]; +rz(0.5*pi) q[33]; +rz(0.5*pi) q[34]; +rx(0.5*pi) q[33]; +rz(0.5*pi) q[34]; +rz(0.5*pi) q[33]; +rx(0.5*pi) q[34]; +rz(0.5*pi) q[33]; +rz(0.5*pi) q[34]; +rx(0.5*pi) q[33]; +rz(0.5*pi) q[33]; +rzz(0.5*pi) q[33],q[32]; +rz(0.5*pi) q[32]; +rz(0.5*pi) q[33]; +rx(0.5*pi) q[32]; +rx(0.5*pi) q[33]; +rz(0.5*pi) q[32]; +rz(0.5*pi) q[33]; +rx(0.5*pi) q[32]; +rz(0.5*pi) q[33]; +rz(0.5*pi) q[32]; +rx(0.5*pi) q[33]; +rz(0.5*pi) q[32]; +rz(0.5*pi) q[33]; +rx(0.5*pi) q[32]; +rz(0.5*pi) q[32]; +rzz(0.5*pi) q[32],q[31]; +rz(0.5*pi) q[31]; +rz(0.5*pi) q[32]; +rx(0.5*pi) q[31]; +rx(0.5*pi) q[32]; +rz(0.5*pi) q[31]; +rz(0.5*pi) q[32]; +rx(0.5*pi) q[31]; +rz(0.5*pi) q[32]; +rz(0.5*pi) q[31]; +rx(0.5*pi) q[32]; +rz(0.5*pi) q[31]; +rz(0.5*pi) q[32]; +rx(0.5*pi) q[31]; +rz(0.5*pi) q[31]; +rzz(0.5*pi) q[31],q[30]; +rz(0.5*pi) q[30]; +rz(0.5*pi) q[31]; +rx(0.5*pi) q[30]; +rx(0.5*pi) q[31]; +rz(0.5*pi) q[30]; +rz(0.5*pi) q[31]; +rx(0.5*pi) q[30]; +rz(0.5*pi) q[31]; +rz(0.5*pi) q[30]; +rx(0.5*pi) q[31]; +rz(0.5*pi) q[30]; +rz(0.5*pi) q[31]; +rx(0.5*pi) q[30]; +rz(0.5*pi) q[30]; +rzz(0.5*pi) q[30],q[29]; +rz(0.5*pi) q[29]; +rz(0.5*pi) q[30]; +rx(0.5*pi) q[29]; +rx(0.5*pi) q[30]; +rz(0.5*pi) q[29]; +rz(0.5*pi) q[30]; +rx(0.5*pi) q[29]; +rz(0.5*pi) q[30]; +rz(0.5*pi) q[29]; +rx(0.5*pi) q[30]; +rz(0.5*pi) q[29]; +rz(0.5*pi) q[30]; +rx(0.5*pi) q[29]; +rz(0.5*pi) q[29]; +rzz(0.5*pi) q[29],q[28]; +rz(0.5*pi) q[28]; +rz(0.5*pi) q[29]; +rx(0.5*pi) q[28]; +rx(0.5*pi) q[29]; +rz(0.5*pi) q[28]; +rz(0.5*pi) q[29]; +rx(0.5*pi) q[28]; +rz(0.5*pi) q[29]; +rz(0.5*pi) q[28]; +rx(0.5*pi) q[29]; +rz(0.5*pi) q[28]; +rz(0.5*pi) q[29]; +rx(0.5*pi) q[28]; +rz(0.5*pi) q[28]; +rzz(0.5*pi) q[28],q[27]; +rz(0.5*pi) q[27]; +rz(0.5*pi) q[28]; +rx(0.5*pi) q[27]; +rx(0.5*pi) q[28]; +rz(0.5*pi) q[27]; +rz(0.5*pi) q[28]; +rx(0.5*pi) q[27]; +rz(0.5*pi) q[28]; +rz(0.5*pi) q[27]; +rx(0.5*pi) q[28]; +rz(0.5*pi) q[27]; +rz(0.5*pi) q[28]; +rx(0.5*pi) q[27]; +rz(0.5*pi) q[27]; +rzz(0.5*pi) q[27],q[26]; +rz(0.5*pi) q[26]; +rz(0.5*pi) q[27]; +rx(0.5*pi) q[26]; +rx(0.5*pi) q[27]; +rz(0.5*pi) q[26]; +rz(0.5*pi) q[27]; +rx(0.5*pi) q[26]; +rz(0.5*pi) q[27]; +rz(0.5*pi) q[26]; +rx(0.5*pi) q[27]; +rz(0.5*pi) q[26]; +rz(0.5*pi) q[27]; +rx(0.5*pi) q[26]; +rz(0.5*pi) q[26]; +rzz(0.5*pi) q[26],q[25]; +rz(0.5*pi) q[25]; +rz(0.5*pi) q[26]; +rx(0.5*pi) q[25]; +rx(0.5*pi) q[26]; +rz(0.5*pi) q[25]; +rz(0.5*pi) q[26]; +rx(0.5*pi) q[25]; +rz(0.5*pi) q[26]; +rz(0.5*pi) q[25]; +rx(0.5*pi) q[26]; +rz(0.5*pi) q[25]; +rz(0.5*pi) q[26]; +rx(0.5*pi) q[25]; +rz(0.5*pi) q[25]; +rzz(0.5*pi) q[25],q[24]; +rz(0.5*pi) q[24]; +rz(0.5*pi) q[25]; +rx(0.5*pi) q[24]; +rx(0.5*pi) q[25]; +rz(0.5*pi) q[24]; +rz(0.5*pi) q[25]; +rx(0.5*pi) q[24]; +rz(0.5*pi) q[25]; +rz(0.5*pi) q[24]; +rx(0.5*pi) q[25]; +rz(0.5*pi) q[24]; +rz(0.5*pi) q[25]; +rx(0.5*pi) q[24]; +rz(0.5*pi) q[24]; +rzz(0.5*pi) q[24],q[23]; +rz(0.5*pi) q[23]; +rz(0.5*pi) q[24]; +rx(0.5*pi) q[23]; +rx(0.5*pi) q[24]; +rz(0.5*pi) q[23]; +rz(0.5*pi) q[24]; +rx(0.5*pi) q[23]; +rz(0.5*pi) q[24]; +rz(0.5*pi) q[23]; +rx(0.5*pi) q[24]; +rz(0.5*pi) q[23]; +rz(0.5*pi) q[24]; +rx(0.5*pi) q[23]; +rz(0.5*pi) q[23]; +rzz(0.5*pi) q[23],q[22]; +rz(0.5*pi) q[22]; +rz(0.5*pi) q[23]; +rx(0.5*pi) q[22]; +rx(0.5*pi) q[23]; +rz(0.5*pi) q[22]; +rz(0.5*pi) q[23]; +rx(0.5*pi) q[22]; +rz(0.5*pi) q[23]; +rz(0.5*pi) q[22]; +rx(0.5*pi) q[23]; +rz(0.5*pi) q[22]; +rz(0.5*pi) q[23]; +rx(0.5*pi) q[22]; +rz(0.5*pi) q[22]; +rzz(0.5*pi) q[22],q[21]; +rz(0.5*pi) q[21]; +rz(0.5*pi) q[22]; +rx(0.5*pi) q[21]; +rx(0.5*pi) q[22]; +rz(0.5*pi) q[21]; +rz(0.5*pi) q[22]; +rx(0.5*pi) q[21]; +rz(0.5*pi) q[22]; +rz(0.5*pi) q[21]; +rx(0.5*pi) q[22]; +rz(0.5*pi) q[21]; +rz(0.5*pi) q[22]; +rx(0.5*pi) q[21]; +rz(0.5*pi) q[21]; +rzz(0.5*pi) q[21],q[20]; +rz(0.5*pi) q[20]; +rz(0.5*pi) q[21]; +rx(0.5*pi) q[20]; +rx(0.5*pi) q[21]; +rz(0.5*pi) q[20]; +rz(0.5*pi) q[21]; +rx(0.5*pi) q[20]; +rz(0.5*pi) q[21]; +rz(0.5*pi) q[20]; +rx(0.5*pi) q[21]; +rz(0.5*pi) q[20]; +rz(0.5*pi) q[21]; +rx(0.5*pi) q[20]; +rz(0.5*pi) q[20]; +rzz(0.5*pi) q[20],q[19]; +rz(0.5*pi) q[19]; +rz(0.5*pi) q[20]; +rx(0.5*pi) q[19]; +rx(0.5*pi) q[20]; +rz(0.5*pi) q[19]; +rz(0.5*pi) q[20]; +rx(0.5*pi) q[19]; +rz(0.5*pi) q[20]; +rz(0.5*pi) q[19]; +rx(0.5*pi) q[20]; +rz(0.5*pi) q[19]; +rz(0.5*pi) q[20]; +rx(0.5*pi) q[19]; +rz(0.5*pi) q[19]; +rzz(0.5*pi) q[19],q[18]; +rz(0.5*pi) q[18]; +rz(0.5*pi) q[19]; +rx(0.5*pi) q[18]; +rx(0.5*pi) q[19]; +rz(0.5*pi) q[18]; +rz(0.5*pi) q[19]; +rx(0.5*pi) q[18]; +rz(0.5*pi) q[19]; +rz(0.5*pi) q[18]; +rx(0.5*pi) q[19]; +rz(0.5*pi) q[18]; +rz(0.5*pi) q[19]; +rx(0.5*pi) q[18]; +rz(0.5*pi) q[18]; +rzz(0.5*pi) q[18],q[17]; +rz(0.5*pi) q[17]; +rz(0.5*pi) q[18]; +rx(0.5*pi) q[17]; +rx(0.5*pi) q[18]; +rz(0.5*pi) q[17]; +rz(0.5*pi) q[18]; +rx(0.5*pi) q[17]; +rz(0.5*pi) q[18]; +rz(0.5*pi) q[17]; +rx(0.5*pi) q[18]; +rz(0.5*pi) q[17]; +rz(0.5*pi) q[18]; +rx(0.5*pi) q[17]; +rz(0.5*pi) q[17]; +rzz(0.5*pi) q[17],q[16]; +rz(0.5*pi) q[16]; +rz(0.5*pi) q[17]; +rx(0.5*pi) q[16]; +rx(0.5*pi) q[17]; +rz(0.5*pi) q[16]; +rz(0.5*pi) q[17]; +rx(0.5*pi) q[16]; +rz(0.5*pi) q[17]; +rz(0.5*pi) q[16]; +rx(0.5*pi) q[17]; +rz(0.5*pi) q[16]; +rz(0.5*pi) q[17]; +rx(0.5*pi) q[16]; +rz(0.5*pi) q[16]; +rzz(0.5*pi) q[16],q[15]; +rz(0.5*pi) q[15]; +rz(0.5*pi) q[16]; +rx(0.5*pi) q[15]; +rx(0.5*pi) q[16]; +rz(0.5*pi) q[15]; +rz(0.5*pi) q[16]; +rx(0.5*pi) q[15]; +rz(0.5*pi) q[16]; +rz(0.5*pi) q[15]; +rx(0.5*pi) q[16]; +rz(0.5*pi) q[15]; +rz(0.5*pi) q[16]; +rx(0.5*pi) q[15]; +rz(0.5*pi) q[15]; +rzz(0.5*pi) q[15],q[14]; +rz(0.5*pi) q[14]; +rz(0.5*pi) q[15]; +rx(0.5*pi) q[14]; +rx(0.5*pi) q[15]; +rz(0.5*pi) q[14]; +rz(0.5*pi) q[15]; +rx(0.5*pi) q[14]; +rz(0.5*pi) q[15]; +rz(0.5*pi) q[14]; +rx(0.5*pi) q[15]; +rz(0.5*pi) q[14]; +rz(0.5*pi) q[15]; +rx(0.5*pi) q[14]; +rz(0.5*pi) q[14]; +rzz(0.5*pi) q[14],q[13]; +rz(0.5*pi) q[13]; +rz(0.5*pi) q[14]; +rx(0.5*pi) q[13]; +rx(0.5*pi) q[14]; +rz(0.5*pi) q[13]; +rz(0.5*pi) q[14]; +rx(0.5*pi) q[13]; +rz(0.5*pi) q[14]; +rz(0.5*pi) q[13]; +rx(0.5*pi) q[14]; +rz(0.5*pi) q[13]; +rz(0.5*pi) q[14]; +rx(0.5*pi) q[13]; +rz(0.5*pi) q[13]; +rzz(0.5*pi) q[13],q[12]; +rz(0.5*pi) q[12]; +rz(0.5*pi) q[13]; +rx(0.5*pi) q[12]; +rx(0.5*pi) q[13]; +rz(0.5*pi) q[12]; +rz(0.5*pi) q[13]; +rx(0.5*pi) q[12]; +rz(0.5*pi) q[13]; +rz(0.5*pi) q[12]; +rx(0.5*pi) q[13]; +rz(0.5*pi) q[12]; +rz(0.5*pi) q[13]; +rx(0.5*pi) q[12]; +rz(0.5*pi) q[12]; +rzz(0.5*pi) q[12],q[11]; +rz(0.5*pi) q[11]; +rz(0.5*pi) q[12]; +rx(0.5*pi) q[11]; +rx(0.5*pi) q[12]; +rz(0.5*pi) q[11]; +rz(0.5*pi) q[12]; +rx(0.5*pi) q[11]; +rz(0.5*pi) q[12]; +rz(0.5*pi) q[11]; +rx(0.5*pi) q[12]; +rz(0.5*pi) q[11]; +rz(0.5*pi) q[12]; +rx(0.5*pi) q[11]; +rz(0.5*pi) q[11]; +rzz(0.5*pi) q[11],q[10]; +rz(0.5*pi) q[10]; +rz(0.5*pi) q[11]; +rx(0.5*pi) q[10]; +rx(0.5*pi) q[11]; +rz(0.5*pi) q[10]; +rz(0.5*pi) q[11]; +rx(0.5*pi) q[10]; +rz(0.5*pi) q[11]; +rz(0.5*pi) q[10]; +rx(0.5*pi) q[11]; +rz(0.5*pi) q[10]; +rz(0.5*pi) q[11]; +rx(0.5*pi) q[10]; +rz(0.5*pi) q[10]; +rzz(0.5*pi) q[10],q[9]; +rz(0.5*pi) q[9]; +rz(0.5*pi) q[10]; +rx(0.5*pi) q[9]; +rx(0.5*pi) q[10]; +rz(0.5*pi) q[9]; +rz(0.5*pi) q[10]; +rx(0.5*pi) q[9]; +rz(0.5*pi) q[10]; +rz(0.5*pi) q[9]; +rx(0.5*pi) q[10]; +rz(0.5*pi) q[9]; +rz(0.5*pi) q[10]; +rx(0.5*pi) q[9]; +rz(0.5*pi) q[9]; +rzz(0.5*pi) q[9],q[8]; +rz(0.5*pi) q[8]; +rz(0.5*pi) q[9]; +rx(0.5*pi) q[8]; +rx(0.5*pi) q[9]; +rz(0.5*pi) q[8]; +rz(0.5*pi) q[9]; +rx(0.5*pi) q[8]; +rz(0.5*pi) q[9]; +rz(0.5*pi) q[8]; +rx(0.5*pi) q[9]; +rz(0.5*pi) q[8]; +rz(0.5*pi) q[9]; +rx(0.5*pi) q[8]; +rz(0.5*pi) q[8]; +rzz(0.5*pi) q[8],q[7]; +rz(0.5*pi) q[7]; +rz(0.5*pi) q[8]; +rx(0.5*pi) q[7]; +rx(0.5*pi) q[8]; +rz(0.5*pi) q[7]; +rz(0.5*pi) q[8]; +rx(0.5*pi) q[7]; +rz(0.5*pi) q[8]; +rz(0.5*pi) q[7]; +rx(0.5*pi) q[8]; +rz(0.5*pi) q[7]; +rz(0.5*pi) q[8]; +rx(0.5*pi) q[7]; +rz(0.5*pi) q[7]; +rzz(0.5*pi) q[7],q[6]; +rz(0.5*pi) q[6]; +rz(0.5*pi) q[7]; +rx(0.5*pi) q[6]; +rx(0.5*pi) q[7]; +rz(0.5*pi) q[6]; +rz(0.5*pi) q[7]; +rx(0.5*pi) q[6]; +rz(0.5*pi) q[7]; +rz(0.5*pi) q[6]; +rx(0.5*pi) q[7]; +rz(0.5*pi) q[6]; +rz(0.5*pi) q[7]; +rx(0.5*pi) q[6]; +rz(0.5*pi) q[6]; +rzz(0.5*pi) q[6],q[5]; +rz(0.5*pi) q[5]; +rz(0.5*pi) q[6]; +rx(0.5*pi) q[5]; +rx(0.5*pi) q[6]; +rz(0.5*pi) q[5]; +rz(0.5*pi) q[6]; +rx(0.5*pi) q[5]; +rz(0.5*pi) q[6]; +rz(0.5*pi) q[5]; +rx(0.5*pi) q[6]; +rz(0.5*pi) q[5]; +rz(0.5*pi) q[6]; +rx(0.5*pi) q[5]; +rz(0.5*pi) q[5]; +rzz(0.5*pi) q[5],q[4]; +rz(0.5*pi) q[4]; +rz(0.5*pi) q[5]; +rx(0.5*pi) q[4]; +rx(0.5*pi) q[5]; +rz(0.5*pi) q[4]; +rz(0.5*pi) q[5]; +rx(0.5*pi) q[4]; +rz(0.5*pi) q[5]; +rz(0.5*pi) q[4]; +rx(0.5*pi) q[5]; +rz(0.5*pi) q[4]; +rz(0.5*pi) q[5]; +rx(0.5*pi) q[4]; +rz(0.5*pi) q[4]; +rzz(0.5*pi) q[4],q[3]; +rz(0.5*pi) q[3]; +rz(0.5*pi) q[4]; +rx(0.5*pi) q[3]; +rx(0.5*pi) q[4]; +rz(0.5*pi) q[3]; +rz(0.5*pi) q[4]; +rx(0.5*pi) q[3]; +rz(0.5*pi) q[4]; +rz(0.5*pi) q[3]; +rx(0.5*pi) q[4]; +rz(0.5*pi) q[3]; +rz(0.5*pi) q[4]; +rx(0.5*pi) q[3]; +rz(0.5*pi) q[3]; +rzz(0.5*pi) q[3],q[2]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[3]; +rx(0.5*pi) q[2]; +rx(0.5*pi) q[3]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[3]; +rx(0.5*pi) q[2]; +rz(0.5*pi) q[3]; +rz(0.5*pi) q[2]; +rx(0.5*pi) q[3]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[3]; +rx(0.5*pi) q[2]; +rz(0.5*pi) q[2]; +rzz(0.5*pi) q[2],q[1]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rx(0.5*pi) q[1]; +rx(0.5*pi) q[2]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rx(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[1]; +rx(0.5*pi) q[2]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rx(0.5*pi) q[1]; +rz(0.5*pi) q[1]; +rzz(0.5*pi) q[1],q[0]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rx(0.5*pi) q[0]; +rx(0.5*pi) q[1]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rz(1.0*pi) q[0]; +rz(0.5*pi) q[1]; +rx(0.5*pi) q[1]; +rz(0.5*pi) q[1]; diff --git a/QASM_files/qft_12qubits.qasm b/QASM_files/qft_12qubits.qasm new file mode 100644 index 0000000..3ec8e35 --- /dev/null +++ b/QASM_files/qft_12qubits.qasm @@ -0,0 +1,83 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[12]; +creg c[12]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +cu1(0.04908738521234052) q[6],q[0]; +cu1(0.02454369260617026) q[7],q[0]; +cu1(0.01227184630308513) q[8],q[0]; +cu1(0.006135923151542565) q[9],q[0]; +cu1(0.0030679615757712823) q[10],q[0]; +cu1(0.0015339807878856412) q[11],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +cu1(0.09817477042468103) q[6],q[1]; +cu1(0.04908738521234052) q[7],q[1]; +cu1(0.02454369260617026) q[8],q[1]; +cu1(0.01227184630308513) q[9],q[1]; +cu1(0.006135923151542565) q[10],q[1]; +cu1(0.0030679615757712823) q[11],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +cu1(0.19634954084936207) q[6],q[2]; +cu1(0.09817477042468103) q[7],q[2]; +cu1(0.04908738521234052) q[8],q[2]; +cu1(0.02454369260617026) q[9],q[2]; +cu1(0.01227184630308513) q[10],q[2]; +cu1(0.006135923151542565) q[11],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +cu1(0.39269908169872414) q[6],q[3]; +cu1(0.19634954084936207) q[7],q[3]; +cu1(0.09817477042468103) q[8],q[3]; +cu1(0.04908738521234052) q[9],q[3]; +cu1(0.02454369260617026) q[10],q[3]; +cu1(0.01227184630308513) q[11],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +cu1(0.7853981633974483) q[6],q[4]; +cu1(0.39269908169872414) q[7],q[4]; +cu1(0.19634954084936207) q[8],q[4]; +cu1(0.09817477042468103) q[9],q[4]; +cu1(0.04908738521234052) q[10],q[4]; +cu1(0.02454369260617026) q[11],q[4]; +h q[5]; +cu1(1.5707963267948966) q[6],q[5]; +cu1(0.7853981633974483) q[7],q[5]; +cu1(0.39269908169872414) q[8],q[5]; +cu1(0.19634954084936207) q[9],q[5]; +cu1(0.09817477042468103) q[10],q[5]; +cu1(0.04908738521234052) q[11],q[5]; +h q[6]; +cu1(1.5707963267948966) q[7],q[6]; +cu1(0.7853981633974483) q[8],q[6]; +cu1(0.39269908169872414) q[9],q[6]; +cu1(0.19634954084936207) q[10],q[6]; +cu1(0.09817477042468103) q[11],q[6]; +h q[7]; +cu1(1.5707963267948966) q[8],q[7]; +cu1(0.7853981633974483) q[9],q[7]; +cu1(0.39269908169872414) q[10],q[7]; +cu1(0.19634954084936207) q[11],q[7]; +h q[8]; +cu1(1.5707963267948966) q[9],q[8]; +cu1(0.7853981633974483) q[10],q[8]; +cu1(0.39269908169872414) q[11],q[8]; +h q[9]; +cu1(1.5707963267948966) q[10],q[9]; +cu1(0.7853981633974483) q[11],q[9]; +h q[10]; +cu1(1.5707963267948966) q[11],q[10]; +h q[11]; diff --git a/QASM_files/qft_17qubits.qasm b/QASM_files/qft_17qubits.qasm new file mode 100644 index 0000000..5bfbf39 --- /dev/null +++ b/QASM_files/qft_17qubits.qasm @@ -0,0 +1,158 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[17]; +creg c[17]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +cu1(0.04908738521234052) q[6],q[0]; +cu1(0.02454369260617026) q[7],q[0]; +cu1(0.01227184630308513) q[8],q[0]; +cu1(0.006135923151542565) q[9],q[0]; +cu1(0.0030679615757712823) q[10],q[0]; +cu1(0.0015339807878856412) q[11],q[0]; +cu1(0.0007669903939428206) q[12],q[0]; +cu1(0.0003834951969714103) q[13],q[0]; +cu1(0.00019174759848570515) q[14],q[0]; +cu1(9.587379924285257e-05) q[15],q[0]; +cu1(4.7936899621426287e-05) q[16],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +cu1(0.09817477042468103) q[6],q[1]; +cu1(0.04908738521234052) q[7],q[1]; +cu1(0.02454369260617026) q[8],q[1]; +cu1(0.01227184630308513) q[9],q[1]; +cu1(0.006135923151542565) q[10],q[1]; +cu1(0.0030679615757712823) q[11],q[1]; +cu1(0.0015339807878856412) q[12],q[1]; +cu1(0.0007669903939428206) q[13],q[1]; +cu1(0.0003834951969714103) q[14],q[1]; +cu1(0.00019174759848570515) q[15],q[1]; +cu1(9.587379924285257e-05) q[16],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +cu1(0.19634954084936207) q[6],q[2]; +cu1(0.09817477042468103) q[7],q[2]; +cu1(0.04908738521234052) q[8],q[2]; +cu1(0.02454369260617026) q[9],q[2]; +cu1(0.01227184630308513) q[10],q[2]; +cu1(0.006135923151542565) q[11],q[2]; +cu1(0.0030679615757712823) q[12],q[2]; +cu1(0.0015339807878856412) q[13],q[2]; +cu1(0.0007669903939428206) q[14],q[2]; +cu1(0.0003834951969714103) q[15],q[2]; +cu1(0.00019174759848570515) q[16],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +cu1(0.39269908169872414) q[6],q[3]; +cu1(0.19634954084936207) q[7],q[3]; +cu1(0.09817477042468103) q[8],q[3]; +cu1(0.04908738521234052) q[9],q[3]; +cu1(0.02454369260617026) q[10],q[3]; +cu1(0.01227184630308513) q[11],q[3]; +cu1(0.006135923151542565) q[12],q[3]; +cu1(0.0030679615757712823) q[13],q[3]; +cu1(0.0015339807878856412) q[14],q[3]; +cu1(0.0007669903939428206) q[15],q[3]; +cu1(0.0003834951969714103) q[16],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +cu1(0.7853981633974483) q[6],q[4]; +cu1(0.39269908169872414) q[7],q[4]; +cu1(0.19634954084936207) q[8],q[4]; +cu1(0.09817477042468103) q[9],q[4]; +cu1(0.04908738521234052) q[10],q[4]; +cu1(0.02454369260617026) q[11],q[4]; +cu1(0.01227184630308513) q[12],q[4]; +cu1(0.006135923151542565) q[13],q[4]; +cu1(0.0030679615757712823) q[14],q[4]; +cu1(0.0015339807878856412) q[15],q[4]; +cu1(0.0007669903939428206) q[16],q[4]; +h q[5]; +cu1(1.5707963267948966) q[6],q[5]; +cu1(0.7853981633974483) q[7],q[5]; +cu1(0.39269908169872414) q[8],q[5]; +cu1(0.19634954084936207) q[9],q[5]; +cu1(0.09817477042468103) q[10],q[5]; +cu1(0.04908738521234052) q[11],q[5]; +cu1(0.02454369260617026) q[12],q[5]; +cu1(0.01227184630308513) q[13],q[5]; +cu1(0.006135923151542565) q[14],q[5]; +cu1(0.0030679615757712823) q[15],q[5]; +cu1(0.0015339807878856412) q[16],q[5]; +h q[6]; +cu1(1.5707963267948966) q[7],q[6]; +cu1(0.7853981633974483) q[8],q[6]; +cu1(0.39269908169872414) q[9],q[6]; +cu1(0.19634954084936207) q[10],q[6]; +cu1(0.09817477042468103) q[11],q[6]; +cu1(0.04908738521234052) q[12],q[6]; +cu1(0.02454369260617026) q[13],q[6]; +cu1(0.01227184630308513) q[14],q[6]; +cu1(0.006135923151542565) q[15],q[6]; +cu1(0.0030679615757712823) q[16],q[6]; +h q[7]; +cu1(1.5707963267948966) q[8],q[7]; +cu1(0.7853981633974483) q[9],q[7]; +cu1(0.39269908169872414) q[10],q[7]; +cu1(0.19634954084936207) q[11],q[7]; +cu1(0.09817477042468103) q[12],q[7]; +cu1(0.04908738521234052) q[13],q[7]; +cu1(0.02454369260617026) q[14],q[7]; +cu1(0.01227184630308513) q[15],q[7]; +cu1(0.006135923151542565) q[16],q[7]; +h q[8]; +cu1(1.5707963267948966) q[9],q[8]; +cu1(0.7853981633974483) q[10],q[8]; +cu1(0.39269908169872414) q[11],q[8]; +cu1(0.19634954084936207) q[12],q[8]; +cu1(0.09817477042468103) q[13],q[8]; +cu1(0.04908738521234052) q[14],q[8]; +cu1(0.02454369260617026) q[15],q[8]; +cu1(0.01227184630308513) q[16],q[8]; +h q[9]; +cu1(1.5707963267948966) q[10],q[9]; +cu1(0.7853981633974483) q[11],q[9]; +cu1(0.39269908169872414) q[12],q[9]; +cu1(0.19634954084936207) q[13],q[9]; +cu1(0.09817477042468103) q[14],q[9]; +cu1(0.04908738521234052) q[15],q[9]; +cu1(0.02454369260617026) q[16],q[9]; +h q[10]; +cu1(1.5707963267948966) q[11],q[10]; +cu1(0.7853981633974483) q[12],q[10]; +cu1(0.39269908169872414) q[13],q[10]; +cu1(0.19634954084936207) q[14],q[10]; +cu1(0.09817477042468103) q[15],q[10]; +cu1(0.04908738521234052) q[16],q[10]; +h q[11]; +cu1(1.5707963267948966) q[12],q[11]; +cu1(0.7853981633974483) q[13],q[11]; +cu1(0.39269908169872414) q[14],q[11]; +cu1(0.19634954084936207) q[15],q[11]; +cu1(0.09817477042468103) q[16],q[11]; +h q[12]; +cu1(1.5707963267948966) q[13],q[12]; +cu1(0.7853981633974483) q[14],q[12]; +cu1(0.39269908169872414) q[15],q[12]; +cu1(0.19634954084936207) q[16],q[12]; +h q[13]; +cu1(1.5707963267948966) q[14],q[13]; +cu1(0.7853981633974483) q[15],q[13]; +cu1(0.39269908169872414) q[16],q[13]; +h q[14]; +cu1(1.5707963267948966) q[15],q[14]; +cu1(0.7853981633974483) q[16],q[14]; +h q[15]; +cu1(1.5707963267948966) q[16],q[15]; +h q[16]; diff --git a/QASM_files/qft_20qubits.qasm b/QASM_files/qft_20qubits.qasm new file mode 100644 index 0000000..e66ae12 --- /dev/null +++ b/QASM_files/qft_20qubits.qasm @@ -0,0 +1,215 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[20]; +creg c[20]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +cu1(0.04908738521234052) q[6],q[0]; +cu1(0.02454369260617026) q[7],q[0]; +cu1(0.01227184630308513) q[8],q[0]; +cu1(0.006135923151542565) q[9],q[0]; +cu1(0.0030679615757712823) q[10],q[0]; +cu1(0.0015339807878856412) q[11],q[0]; +cu1(0.0007669903939428206) q[12],q[0]; +cu1(0.0003834951969714103) q[13],q[0]; +cu1(0.00019174759848570515) q[14],q[0]; +cu1(9.587379924285257e-05) q[15],q[0]; +cu1(4.7936899621426287e-05) q[16],q[0]; +cu1(2.3968449810713143e-05) q[17],q[0]; +cu1(1.1984224905356572e-05) q[18],q[0]; +cu1(5.992112452678286e-06) q[19],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +cu1(0.09817477042468103) q[6],q[1]; +cu1(0.04908738521234052) q[7],q[1]; +cu1(0.02454369260617026) q[8],q[1]; +cu1(0.01227184630308513) q[9],q[1]; +cu1(0.006135923151542565) q[10],q[1]; +cu1(0.0030679615757712823) q[11],q[1]; +cu1(0.0015339807878856412) q[12],q[1]; +cu1(0.0007669903939428206) q[13],q[1]; +cu1(0.0003834951969714103) q[14],q[1]; +cu1(0.00019174759848570515) q[15],q[1]; +cu1(9.587379924285257e-05) q[16],q[1]; +cu1(4.7936899621426287e-05) q[17],q[1]; +cu1(2.3968449810713143e-05) q[18],q[1]; +cu1(1.1984224905356572e-05) q[19],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +cu1(0.19634954084936207) q[6],q[2]; +cu1(0.09817477042468103) q[7],q[2]; +cu1(0.04908738521234052) q[8],q[2]; +cu1(0.02454369260617026) q[9],q[2]; +cu1(0.01227184630308513) q[10],q[2]; +cu1(0.006135923151542565) q[11],q[2]; +cu1(0.0030679615757712823) q[12],q[2]; +cu1(0.0015339807878856412) q[13],q[2]; +cu1(0.0007669903939428206) q[14],q[2]; +cu1(0.0003834951969714103) q[15],q[2]; +cu1(0.00019174759848570515) q[16],q[2]; +cu1(9.587379924285257e-05) q[17],q[2]; +cu1(4.7936899621426287e-05) q[18],q[2]; +cu1(2.3968449810713143e-05) q[19],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +cu1(0.39269908169872414) q[6],q[3]; +cu1(0.19634954084936207) q[7],q[3]; +cu1(0.09817477042468103) q[8],q[3]; +cu1(0.04908738521234052) q[9],q[3]; +cu1(0.02454369260617026) q[10],q[3]; +cu1(0.01227184630308513) q[11],q[3]; +cu1(0.006135923151542565) q[12],q[3]; +cu1(0.0030679615757712823) q[13],q[3]; +cu1(0.0015339807878856412) q[14],q[3]; +cu1(0.0007669903939428206) q[15],q[3]; +cu1(0.0003834951969714103) q[16],q[3]; +cu1(0.00019174759848570515) q[17],q[3]; +cu1(9.587379924285257e-05) q[18],q[3]; +cu1(4.7936899621426287e-05) q[19],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +cu1(0.7853981633974483) q[6],q[4]; +cu1(0.39269908169872414) q[7],q[4]; +cu1(0.19634954084936207) q[8],q[4]; +cu1(0.09817477042468103) q[9],q[4]; +cu1(0.04908738521234052) q[10],q[4]; +cu1(0.02454369260617026) q[11],q[4]; +cu1(0.01227184630308513) q[12],q[4]; +cu1(0.006135923151542565) q[13],q[4]; +cu1(0.0030679615757712823) q[14],q[4]; +cu1(0.0015339807878856412) q[15],q[4]; +cu1(0.0007669903939428206) q[16],q[4]; +cu1(0.0003834951969714103) q[17],q[4]; +cu1(0.00019174759848570515) q[18],q[4]; +cu1(9.587379924285257e-05) q[19],q[4]; +h q[5]; +cu1(1.5707963267948966) q[6],q[5]; +cu1(0.7853981633974483) q[7],q[5]; +cu1(0.39269908169872414) q[8],q[5]; +cu1(0.19634954084936207) q[9],q[5]; +cu1(0.09817477042468103) q[10],q[5]; +cu1(0.04908738521234052) q[11],q[5]; +cu1(0.02454369260617026) q[12],q[5]; +cu1(0.01227184630308513) q[13],q[5]; +cu1(0.006135923151542565) q[14],q[5]; +cu1(0.0030679615757712823) q[15],q[5]; +cu1(0.0015339807878856412) q[16],q[5]; +cu1(0.0007669903939428206) q[17],q[5]; +cu1(0.0003834951969714103) q[18],q[5]; +cu1(0.00019174759848570515) q[19],q[5]; +h q[6]; +cu1(1.5707963267948966) q[7],q[6]; +cu1(0.7853981633974483) q[8],q[6]; +cu1(0.39269908169872414) q[9],q[6]; +cu1(0.19634954084936207) q[10],q[6]; +cu1(0.09817477042468103) q[11],q[6]; +cu1(0.04908738521234052) q[12],q[6]; +cu1(0.02454369260617026) q[13],q[6]; +cu1(0.01227184630308513) q[14],q[6]; +cu1(0.006135923151542565) q[15],q[6]; +cu1(0.0030679615757712823) q[16],q[6]; +cu1(0.0015339807878856412) q[17],q[6]; +cu1(0.0007669903939428206) q[18],q[6]; +cu1(0.0003834951969714103) q[19],q[6]; +h q[7]; +cu1(1.5707963267948966) q[8],q[7]; +cu1(0.7853981633974483) q[9],q[7]; +cu1(0.39269908169872414) q[10],q[7]; +cu1(0.19634954084936207) q[11],q[7]; +cu1(0.09817477042468103) q[12],q[7]; +cu1(0.04908738521234052) q[13],q[7]; +cu1(0.02454369260617026) q[14],q[7]; +cu1(0.01227184630308513) q[15],q[7]; +cu1(0.006135923151542565) q[16],q[7]; +cu1(0.0030679615757712823) q[17],q[7]; +cu1(0.0015339807878856412) q[18],q[7]; +cu1(0.0007669903939428206) q[19],q[7]; +h q[8]; +cu1(1.5707963267948966) q[9],q[8]; +cu1(0.7853981633974483) q[10],q[8]; +cu1(0.39269908169872414) q[11],q[8]; +cu1(0.19634954084936207) q[12],q[8]; +cu1(0.09817477042468103) q[13],q[8]; +cu1(0.04908738521234052) q[14],q[8]; +cu1(0.02454369260617026) q[15],q[8]; +cu1(0.01227184630308513) q[16],q[8]; +cu1(0.006135923151542565) q[17],q[8]; +cu1(0.0030679615757712823) q[18],q[8]; +cu1(0.0015339807878856412) q[19],q[8]; +h q[9]; +cu1(1.5707963267948966) q[10],q[9]; +cu1(0.7853981633974483) q[11],q[9]; +cu1(0.39269908169872414) q[12],q[9]; +cu1(0.19634954084936207) q[13],q[9]; +cu1(0.09817477042468103) q[14],q[9]; +cu1(0.04908738521234052) q[15],q[9]; +cu1(0.02454369260617026) q[16],q[9]; +cu1(0.01227184630308513) q[17],q[9]; +cu1(0.006135923151542565) q[18],q[9]; +cu1(0.0030679615757712823) q[19],q[9]; +h q[10]; +cu1(1.5707963267948966) q[11],q[10]; +cu1(0.7853981633974483) q[12],q[10]; +cu1(0.39269908169872414) q[13],q[10]; +cu1(0.19634954084936207) q[14],q[10]; +cu1(0.09817477042468103) q[15],q[10]; +cu1(0.04908738521234052) q[16],q[10]; +cu1(0.02454369260617026) q[17],q[10]; +cu1(0.01227184630308513) q[18],q[10]; +cu1(0.006135923151542565) q[19],q[10]; +h q[11]; +cu1(1.5707963267948966) q[12],q[11]; +cu1(0.7853981633974483) q[13],q[11]; +cu1(0.39269908169872414) q[14],q[11]; +cu1(0.19634954084936207) q[15],q[11]; +cu1(0.09817477042468103) q[16],q[11]; +cu1(0.04908738521234052) q[17],q[11]; +cu1(0.02454369260617026) q[18],q[11]; +cu1(0.01227184630308513) q[19],q[11]; +h q[12]; +cu1(1.5707963267948966) q[13],q[12]; +cu1(0.7853981633974483) q[14],q[12]; +cu1(0.39269908169872414) q[15],q[12]; +cu1(0.19634954084936207) q[16],q[12]; +cu1(0.09817477042468103) q[17],q[12]; +cu1(0.04908738521234052) q[18],q[12]; +cu1(0.02454369260617026) q[19],q[12]; +h q[13]; +cu1(1.5707963267948966) q[14],q[13]; +cu1(0.7853981633974483) q[15],q[13]; +cu1(0.39269908169872414) q[16],q[13]; +cu1(0.19634954084936207) q[17],q[13]; +cu1(0.09817477042468103) q[18],q[13]; +cu1(0.04908738521234052) q[19],q[13]; +h q[14]; +cu1(1.5707963267948966) q[15],q[14]; +cu1(0.7853981633974483) q[16],q[14]; +cu1(0.39269908169872414) q[17],q[14]; +cu1(0.19634954084936207) q[18],q[14]; +cu1(0.09817477042468103) q[19],q[14]; +h q[15]; +cu1(1.5707963267948966) q[16],q[15]; +cu1(0.7853981633974483) q[17],q[15]; +cu1(0.39269908169872414) q[18],q[15]; +cu1(0.19634954084936207) q[19],q[15]; +h q[16]; +cu1(1.5707963267948966) q[17],q[16]; +cu1(0.7853981633974483) q[18],q[16]; +cu1(0.39269908169872414) q[19],q[16]; +h q[17]; +cu1(1.5707963267948966) q[18],q[17]; +cu1(0.7853981633974483) q[19],q[17]; +h q[18]; +cu1(1.5707963267948966) q[19],q[18]; +h q[19]; diff --git a/QASM_files/qft_24qubits.qasm b/QASM_files/qft_24qubits.qasm new file mode 100644 index 0000000..dfbb436 --- /dev/null +++ b/QASM_files/qft_24qubits.qasm @@ -0,0 +1,305 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[24]; +creg c[24]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +cu1(0.04908738521234052) q[6],q[0]; +cu1(0.02454369260617026) q[7],q[0]; +cu1(0.01227184630308513) q[8],q[0]; +cu1(0.006135923151542565) q[9],q[0]; +cu1(0.0030679615757712823) q[10],q[0]; +cu1(0.0015339807878856412) q[11],q[0]; +cu1(0.0007669903939428206) q[12],q[0]; +cu1(0.0003834951969714103) q[13],q[0]; +cu1(0.00019174759848570515) q[14],q[0]; +cu1(9.587379924285257e-05) q[15],q[0]; +cu1(4.7936899621426287e-05) q[16],q[0]; +cu1(2.3968449810713143e-05) q[17],q[0]; +cu1(1.1984224905356572e-05) q[18],q[0]; +cu1(5.992112452678286e-06) q[19],q[0]; +cu1(2.996056226339143e-06) q[20],q[0]; +cu1(1.4980281131695715e-06) q[21],q[0]; +cu1(7.490140565847857e-07) q[22],q[0]; +cu1(3.7450702829239286e-07) q[23],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +cu1(0.09817477042468103) q[6],q[1]; +cu1(0.04908738521234052) q[7],q[1]; +cu1(0.02454369260617026) q[8],q[1]; +cu1(0.01227184630308513) q[9],q[1]; +cu1(0.006135923151542565) q[10],q[1]; +cu1(0.0030679615757712823) q[11],q[1]; +cu1(0.0015339807878856412) q[12],q[1]; +cu1(0.0007669903939428206) q[13],q[1]; +cu1(0.0003834951969714103) q[14],q[1]; +cu1(0.00019174759848570515) q[15],q[1]; +cu1(9.587379924285257e-05) q[16],q[1]; +cu1(4.7936899621426287e-05) q[17],q[1]; +cu1(2.3968449810713143e-05) q[18],q[1]; +cu1(1.1984224905356572e-05) q[19],q[1]; +cu1(5.992112452678286e-06) q[20],q[1]; +cu1(2.996056226339143e-06) q[21],q[1]; +cu1(1.4980281131695715e-06) q[22],q[1]; +cu1(7.490140565847857e-07) q[23],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +cu1(0.19634954084936207) q[6],q[2]; +cu1(0.09817477042468103) q[7],q[2]; +cu1(0.04908738521234052) q[8],q[2]; +cu1(0.02454369260617026) q[9],q[2]; +cu1(0.01227184630308513) q[10],q[2]; +cu1(0.006135923151542565) q[11],q[2]; +cu1(0.0030679615757712823) q[12],q[2]; +cu1(0.0015339807878856412) q[13],q[2]; +cu1(0.0007669903939428206) q[14],q[2]; +cu1(0.0003834951969714103) q[15],q[2]; +cu1(0.00019174759848570515) q[16],q[2]; +cu1(9.587379924285257e-05) q[17],q[2]; +cu1(4.7936899621426287e-05) q[18],q[2]; +cu1(2.3968449810713143e-05) q[19],q[2]; +cu1(1.1984224905356572e-05) q[20],q[2]; +cu1(5.992112452678286e-06) q[21],q[2]; +cu1(2.996056226339143e-06) q[22],q[2]; +cu1(1.4980281131695715e-06) q[23],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +cu1(0.39269908169872414) q[6],q[3]; +cu1(0.19634954084936207) q[7],q[3]; +cu1(0.09817477042468103) q[8],q[3]; +cu1(0.04908738521234052) q[9],q[3]; +cu1(0.02454369260617026) q[10],q[3]; +cu1(0.01227184630308513) q[11],q[3]; +cu1(0.006135923151542565) q[12],q[3]; +cu1(0.0030679615757712823) q[13],q[3]; +cu1(0.0015339807878856412) q[14],q[3]; +cu1(0.0007669903939428206) q[15],q[3]; +cu1(0.0003834951969714103) q[16],q[3]; +cu1(0.00019174759848570515) q[17],q[3]; +cu1(9.587379924285257e-05) q[18],q[3]; +cu1(4.7936899621426287e-05) q[19],q[3]; +cu1(2.3968449810713143e-05) q[20],q[3]; +cu1(1.1984224905356572e-05) q[21],q[3]; +cu1(5.992112452678286e-06) q[22],q[3]; +cu1(2.996056226339143e-06) q[23],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +cu1(0.7853981633974483) q[6],q[4]; +cu1(0.39269908169872414) q[7],q[4]; +cu1(0.19634954084936207) q[8],q[4]; +cu1(0.09817477042468103) q[9],q[4]; +cu1(0.04908738521234052) q[10],q[4]; +cu1(0.02454369260617026) q[11],q[4]; +cu1(0.01227184630308513) q[12],q[4]; +cu1(0.006135923151542565) q[13],q[4]; +cu1(0.0030679615757712823) q[14],q[4]; +cu1(0.0015339807878856412) q[15],q[4]; +cu1(0.0007669903939428206) q[16],q[4]; +cu1(0.0003834951969714103) q[17],q[4]; +cu1(0.00019174759848570515) q[18],q[4]; +cu1(9.587379924285257e-05) q[19],q[4]; +cu1(4.7936899621426287e-05) q[20],q[4]; +cu1(2.3968449810713143e-05) q[21],q[4]; +cu1(1.1984224905356572e-05) q[22],q[4]; +cu1(5.992112452678286e-06) q[23],q[4]; +h q[5]; +cu1(1.5707963267948966) q[6],q[5]; +cu1(0.7853981633974483) q[7],q[5]; +cu1(0.39269908169872414) q[8],q[5]; +cu1(0.19634954084936207) q[9],q[5]; +cu1(0.09817477042468103) q[10],q[5]; +cu1(0.04908738521234052) q[11],q[5]; +cu1(0.02454369260617026) q[12],q[5]; +cu1(0.01227184630308513) q[13],q[5]; +cu1(0.006135923151542565) q[14],q[5]; +cu1(0.0030679615757712823) q[15],q[5]; +cu1(0.0015339807878856412) q[16],q[5]; +cu1(0.0007669903939428206) q[17],q[5]; +cu1(0.0003834951969714103) q[18],q[5]; +cu1(0.00019174759848570515) q[19],q[5]; +cu1(9.587379924285257e-05) q[20],q[5]; +cu1(4.7936899621426287e-05) q[21],q[5]; +cu1(2.3968449810713143e-05) q[22],q[5]; +cu1(1.1984224905356572e-05) q[23],q[5]; +h q[6]; +cu1(1.5707963267948966) q[7],q[6]; +cu1(0.7853981633974483) q[8],q[6]; +cu1(0.39269908169872414) q[9],q[6]; +cu1(0.19634954084936207) q[10],q[6]; +cu1(0.09817477042468103) q[11],q[6]; +cu1(0.04908738521234052) q[12],q[6]; +cu1(0.02454369260617026) q[13],q[6]; +cu1(0.01227184630308513) q[14],q[6]; +cu1(0.006135923151542565) q[15],q[6]; +cu1(0.0030679615757712823) q[16],q[6]; +cu1(0.0015339807878856412) q[17],q[6]; +cu1(0.0007669903939428206) q[18],q[6]; +cu1(0.0003834951969714103) q[19],q[6]; +cu1(0.00019174759848570515) q[20],q[6]; +cu1(9.587379924285257e-05) q[21],q[6]; +cu1(4.7936899621426287e-05) q[22],q[6]; +cu1(2.3968449810713143e-05) q[23],q[6]; +h q[7]; +cu1(1.5707963267948966) q[8],q[7]; +cu1(0.7853981633974483) q[9],q[7]; +cu1(0.39269908169872414) q[10],q[7]; +cu1(0.19634954084936207) q[11],q[7]; +cu1(0.09817477042468103) q[12],q[7]; +cu1(0.04908738521234052) q[13],q[7]; +cu1(0.02454369260617026) q[14],q[7]; +cu1(0.01227184630308513) q[15],q[7]; +cu1(0.006135923151542565) q[16],q[7]; +cu1(0.0030679615757712823) q[17],q[7]; +cu1(0.0015339807878856412) q[18],q[7]; +cu1(0.0007669903939428206) q[19],q[7]; +cu1(0.0003834951969714103) q[20],q[7]; +cu1(0.00019174759848570515) q[21],q[7]; +cu1(9.587379924285257e-05) q[22],q[7]; +cu1(4.7936899621426287e-05) q[23],q[7]; +h q[8]; +cu1(1.5707963267948966) q[9],q[8]; +cu1(0.7853981633974483) q[10],q[8]; +cu1(0.39269908169872414) q[11],q[8]; +cu1(0.19634954084936207) q[12],q[8]; +cu1(0.09817477042468103) q[13],q[8]; +cu1(0.04908738521234052) q[14],q[8]; +cu1(0.02454369260617026) q[15],q[8]; +cu1(0.01227184630308513) q[16],q[8]; +cu1(0.006135923151542565) q[17],q[8]; +cu1(0.0030679615757712823) q[18],q[8]; +cu1(0.0015339807878856412) q[19],q[8]; +cu1(0.0007669903939428206) q[20],q[8]; +cu1(0.0003834951969714103) q[21],q[8]; +cu1(0.00019174759848570515) q[22],q[8]; +cu1(9.587379924285257e-05) q[23],q[8]; +h q[9]; +cu1(1.5707963267948966) q[10],q[9]; +cu1(0.7853981633974483) q[11],q[9]; +cu1(0.39269908169872414) q[12],q[9]; +cu1(0.19634954084936207) q[13],q[9]; +cu1(0.09817477042468103) q[14],q[9]; +cu1(0.04908738521234052) q[15],q[9]; +cu1(0.02454369260617026) q[16],q[9]; +cu1(0.01227184630308513) q[17],q[9]; +cu1(0.006135923151542565) q[18],q[9]; +cu1(0.0030679615757712823) q[19],q[9]; +cu1(0.0015339807878856412) q[20],q[9]; +cu1(0.0007669903939428206) q[21],q[9]; +cu1(0.0003834951969714103) q[22],q[9]; +cu1(0.00019174759848570515) q[23],q[9]; +h q[10]; +cu1(1.5707963267948966) q[11],q[10]; +cu1(0.7853981633974483) q[12],q[10]; +cu1(0.39269908169872414) q[13],q[10]; +cu1(0.19634954084936207) q[14],q[10]; +cu1(0.09817477042468103) q[15],q[10]; +cu1(0.04908738521234052) q[16],q[10]; +cu1(0.02454369260617026) q[17],q[10]; +cu1(0.01227184630308513) q[18],q[10]; +cu1(0.006135923151542565) q[19],q[10]; +cu1(0.0030679615757712823) q[20],q[10]; +cu1(0.0015339807878856412) q[21],q[10]; +cu1(0.0007669903939428206) q[22],q[10]; +cu1(0.0003834951969714103) q[23],q[10]; +h q[11]; +cu1(1.5707963267948966) q[12],q[11]; +cu1(0.7853981633974483) q[13],q[11]; +cu1(0.39269908169872414) q[14],q[11]; +cu1(0.19634954084936207) q[15],q[11]; +cu1(0.09817477042468103) q[16],q[11]; +cu1(0.04908738521234052) q[17],q[11]; +cu1(0.02454369260617026) q[18],q[11]; +cu1(0.01227184630308513) q[19],q[11]; +cu1(0.006135923151542565) q[20],q[11]; +cu1(0.0030679615757712823) q[21],q[11]; +cu1(0.0015339807878856412) q[22],q[11]; +cu1(0.0007669903939428206) q[23],q[11]; +h q[12]; +cu1(1.5707963267948966) q[13],q[12]; +cu1(0.7853981633974483) q[14],q[12]; +cu1(0.39269908169872414) q[15],q[12]; +cu1(0.19634954084936207) q[16],q[12]; +cu1(0.09817477042468103) q[17],q[12]; +cu1(0.04908738521234052) q[18],q[12]; +cu1(0.02454369260617026) q[19],q[12]; +cu1(0.01227184630308513) q[20],q[12]; +cu1(0.006135923151542565) q[21],q[12]; +cu1(0.0030679615757712823) q[22],q[12]; +cu1(0.0015339807878856412) q[23],q[12]; +h q[13]; +cu1(1.5707963267948966) q[14],q[13]; +cu1(0.7853981633974483) q[15],q[13]; +cu1(0.39269908169872414) q[16],q[13]; +cu1(0.19634954084936207) q[17],q[13]; +cu1(0.09817477042468103) q[18],q[13]; +cu1(0.04908738521234052) q[19],q[13]; +cu1(0.02454369260617026) q[20],q[13]; +cu1(0.01227184630308513) q[21],q[13]; +cu1(0.006135923151542565) q[22],q[13]; +cu1(0.0030679615757712823) q[23],q[13]; +h q[14]; +cu1(1.5707963267948966) q[15],q[14]; +cu1(0.7853981633974483) q[16],q[14]; +cu1(0.39269908169872414) q[17],q[14]; +cu1(0.19634954084936207) q[18],q[14]; +cu1(0.09817477042468103) q[19],q[14]; +cu1(0.04908738521234052) q[20],q[14]; +cu1(0.02454369260617026) q[21],q[14]; +cu1(0.01227184630308513) q[22],q[14]; +cu1(0.006135923151542565) q[23],q[14]; +h q[15]; +cu1(1.5707963267948966) q[16],q[15]; +cu1(0.7853981633974483) q[17],q[15]; +cu1(0.39269908169872414) q[18],q[15]; +cu1(0.19634954084936207) q[19],q[15]; +cu1(0.09817477042468103) q[20],q[15]; +cu1(0.04908738521234052) q[21],q[15]; +cu1(0.02454369260617026) q[22],q[15]; +cu1(0.01227184630308513) q[23],q[15]; +h q[16]; +cu1(1.5707963267948966) q[17],q[16]; +cu1(0.7853981633974483) q[18],q[16]; +cu1(0.39269908169872414) q[19],q[16]; +cu1(0.19634954084936207) q[20],q[16]; +cu1(0.09817477042468103) q[21],q[16]; +cu1(0.04908738521234052) q[22],q[16]; +cu1(0.02454369260617026) q[23],q[16]; +h q[17]; +cu1(1.5707963267948966) q[18],q[17]; +cu1(0.7853981633974483) q[19],q[17]; +cu1(0.39269908169872414) q[20],q[17]; +cu1(0.19634954084936207) q[21],q[17]; +cu1(0.09817477042468103) q[22],q[17]; +cu1(0.04908738521234052) q[23],q[17]; +h q[18]; +cu1(1.5707963267948966) q[19],q[18]; +cu1(0.7853981633974483) q[20],q[18]; +cu1(0.39269908169872414) q[21],q[18]; +cu1(0.19634954084936207) q[22],q[18]; +cu1(0.09817477042468103) q[23],q[18]; +h q[19]; +cu1(1.5707963267948966) q[20],q[19]; +cu1(0.7853981633974483) q[21],q[19]; +cu1(0.39269908169872414) q[22],q[19]; +cu1(0.19634954084936207) q[23],q[19]; +h q[20]; +cu1(1.5707963267948966) q[21],q[20]; +cu1(0.7853981633974483) q[22],q[20]; +cu1(0.39269908169872414) q[23],q[20]; +h q[21]; +cu1(1.5707963267948966) q[22],q[21]; +cu1(0.7853981633974483) q[23],q[21]; +h q[22]; +cu1(1.5707963267948966) q[23],q[22]; +h q[23]; diff --git a/QASM_files/qft_30qubits.qasm b/QASM_files/qft_30qubits.qasm new file mode 100644 index 0000000..3aecdb9 --- /dev/null +++ b/QASM_files/qft_30qubits.qasm @@ -0,0 +1,470 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[30]; +creg c[30]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +cu1(0.04908738521234052) q[6],q[0]; +cu1(0.02454369260617026) q[7],q[0]; +cu1(0.01227184630308513) q[8],q[0]; +cu1(0.006135923151542565) q[9],q[0]; +cu1(0.0030679615757712823) q[10],q[0]; +cu1(0.0015339807878856412) q[11],q[0]; +cu1(0.0007669903939428206) q[12],q[0]; +cu1(0.0003834951969714103) q[13],q[0]; +cu1(0.00019174759848570515) q[14],q[0]; +cu1(9.587379924285257e-05) q[15],q[0]; +cu1(4.7936899621426287e-05) q[16],q[0]; +cu1(2.3968449810713143e-05) q[17],q[0]; +cu1(1.1984224905356572e-05) q[18],q[0]; +cu1(5.992112452678286e-06) q[19],q[0]; +cu1(2.996056226339143e-06) q[20],q[0]; +cu1(1.4980281131695715e-06) q[21],q[0]; +cu1(7.490140565847857e-07) q[22],q[0]; +cu1(3.7450702829239286e-07) q[23],q[0]; +cu1(1.8725351414619643e-07) q[24],q[0]; +cu1(9.362675707309822e-08) q[25],q[0]; +cu1(4.681337853654911e-08) q[26],q[0]; +cu1(2.3406689268274554e-08) q[27],q[0]; +cu1(1.1703344634137277e-08) q[28],q[0]; +cu1(5.8516723170686385e-09) q[29],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +cu1(0.09817477042468103) q[6],q[1]; +cu1(0.04908738521234052) q[7],q[1]; +cu1(0.02454369260617026) q[8],q[1]; +cu1(0.01227184630308513) q[9],q[1]; +cu1(0.006135923151542565) q[10],q[1]; +cu1(0.0030679615757712823) q[11],q[1]; +cu1(0.0015339807878856412) q[12],q[1]; +cu1(0.0007669903939428206) q[13],q[1]; +cu1(0.0003834951969714103) q[14],q[1]; +cu1(0.00019174759848570515) q[15],q[1]; +cu1(9.587379924285257e-05) q[16],q[1]; +cu1(4.7936899621426287e-05) q[17],q[1]; +cu1(2.3968449810713143e-05) q[18],q[1]; +cu1(1.1984224905356572e-05) q[19],q[1]; +cu1(5.992112452678286e-06) q[20],q[1]; +cu1(2.996056226339143e-06) q[21],q[1]; +cu1(1.4980281131695715e-06) q[22],q[1]; +cu1(7.490140565847857e-07) q[23],q[1]; +cu1(3.7450702829239286e-07) q[24],q[1]; +cu1(1.8725351414619643e-07) q[25],q[1]; +cu1(9.362675707309822e-08) q[26],q[1]; +cu1(4.681337853654911e-08) q[27],q[1]; +cu1(2.3406689268274554e-08) q[28],q[1]; +cu1(1.1703344634137277e-08) q[29],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +cu1(0.19634954084936207) q[6],q[2]; +cu1(0.09817477042468103) q[7],q[2]; +cu1(0.04908738521234052) q[8],q[2]; +cu1(0.02454369260617026) q[9],q[2]; +cu1(0.01227184630308513) q[10],q[2]; +cu1(0.006135923151542565) q[11],q[2]; +cu1(0.0030679615757712823) q[12],q[2]; +cu1(0.0015339807878856412) q[13],q[2]; +cu1(0.0007669903939428206) q[14],q[2]; +cu1(0.0003834951969714103) q[15],q[2]; +cu1(0.00019174759848570515) q[16],q[2]; +cu1(9.587379924285257e-05) q[17],q[2]; +cu1(4.7936899621426287e-05) q[18],q[2]; +cu1(2.3968449810713143e-05) q[19],q[2]; +cu1(1.1984224905356572e-05) q[20],q[2]; +cu1(5.992112452678286e-06) q[21],q[2]; +cu1(2.996056226339143e-06) q[22],q[2]; +cu1(1.4980281131695715e-06) q[23],q[2]; +cu1(7.490140565847857e-07) q[24],q[2]; +cu1(3.7450702829239286e-07) q[25],q[2]; +cu1(1.8725351414619643e-07) q[26],q[2]; +cu1(9.362675707309822e-08) q[27],q[2]; +cu1(4.681337853654911e-08) q[28],q[2]; +cu1(2.3406689268274554e-08) q[29],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +cu1(0.39269908169872414) q[6],q[3]; +cu1(0.19634954084936207) q[7],q[3]; +cu1(0.09817477042468103) q[8],q[3]; +cu1(0.04908738521234052) q[9],q[3]; +cu1(0.02454369260617026) q[10],q[3]; +cu1(0.01227184630308513) q[11],q[3]; +cu1(0.006135923151542565) q[12],q[3]; +cu1(0.0030679615757712823) q[13],q[3]; +cu1(0.0015339807878856412) q[14],q[3]; +cu1(0.0007669903939428206) q[15],q[3]; +cu1(0.0003834951969714103) q[16],q[3]; +cu1(0.00019174759848570515) q[17],q[3]; +cu1(9.587379924285257e-05) q[18],q[3]; +cu1(4.7936899621426287e-05) q[19],q[3]; +cu1(2.3968449810713143e-05) q[20],q[3]; +cu1(1.1984224905356572e-05) q[21],q[3]; +cu1(5.992112452678286e-06) q[22],q[3]; +cu1(2.996056226339143e-06) q[23],q[3]; +cu1(1.4980281131695715e-06) q[24],q[3]; +cu1(7.490140565847857e-07) q[25],q[3]; +cu1(3.7450702829239286e-07) q[26],q[3]; +cu1(1.8725351414619643e-07) q[27],q[3]; +cu1(9.362675707309822e-08) q[28],q[3]; +cu1(4.681337853654911e-08) q[29],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +cu1(0.7853981633974483) q[6],q[4]; +cu1(0.39269908169872414) q[7],q[4]; +cu1(0.19634954084936207) q[8],q[4]; +cu1(0.09817477042468103) q[9],q[4]; +cu1(0.04908738521234052) q[10],q[4]; +cu1(0.02454369260617026) q[11],q[4]; +cu1(0.01227184630308513) q[12],q[4]; +cu1(0.006135923151542565) q[13],q[4]; +cu1(0.0030679615757712823) q[14],q[4]; +cu1(0.0015339807878856412) q[15],q[4]; +cu1(0.0007669903939428206) q[16],q[4]; +cu1(0.0003834951969714103) q[17],q[4]; +cu1(0.00019174759848570515) q[18],q[4]; +cu1(9.587379924285257e-05) q[19],q[4]; +cu1(4.7936899621426287e-05) q[20],q[4]; +cu1(2.3968449810713143e-05) q[21],q[4]; +cu1(1.1984224905356572e-05) q[22],q[4]; +cu1(5.992112452678286e-06) q[23],q[4]; +cu1(2.996056226339143e-06) q[24],q[4]; +cu1(1.4980281131695715e-06) q[25],q[4]; +cu1(7.490140565847857e-07) q[26],q[4]; +cu1(3.7450702829239286e-07) q[27],q[4]; +cu1(1.8725351414619643e-07) q[28],q[4]; +cu1(9.362675707309822e-08) q[29],q[4]; +h q[5]; +cu1(1.5707963267948966) q[6],q[5]; +cu1(0.7853981633974483) q[7],q[5]; +cu1(0.39269908169872414) q[8],q[5]; +cu1(0.19634954084936207) q[9],q[5]; +cu1(0.09817477042468103) q[10],q[5]; +cu1(0.04908738521234052) q[11],q[5]; +cu1(0.02454369260617026) q[12],q[5]; +cu1(0.01227184630308513) q[13],q[5]; +cu1(0.006135923151542565) q[14],q[5]; +cu1(0.0030679615757712823) q[15],q[5]; +cu1(0.0015339807878856412) q[16],q[5]; +cu1(0.0007669903939428206) q[17],q[5]; +cu1(0.0003834951969714103) q[18],q[5]; +cu1(0.00019174759848570515) q[19],q[5]; +cu1(9.587379924285257e-05) q[20],q[5]; +cu1(4.7936899621426287e-05) q[21],q[5]; +cu1(2.3968449810713143e-05) q[22],q[5]; +cu1(1.1984224905356572e-05) q[23],q[5]; +cu1(5.992112452678286e-06) q[24],q[5]; +cu1(2.996056226339143e-06) q[25],q[5]; +cu1(1.4980281131695715e-06) q[26],q[5]; +cu1(7.490140565847857e-07) q[27],q[5]; +cu1(3.7450702829239286e-07) q[28],q[5]; +cu1(1.8725351414619643e-07) q[29],q[5]; +h q[6]; +cu1(1.5707963267948966) q[7],q[6]; +cu1(0.7853981633974483) q[8],q[6]; +cu1(0.39269908169872414) q[9],q[6]; +cu1(0.19634954084936207) q[10],q[6]; +cu1(0.09817477042468103) q[11],q[6]; +cu1(0.04908738521234052) q[12],q[6]; +cu1(0.02454369260617026) q[13],q[6]; +cu1(0.01227184630308513) q[14],q[6]; +cu1(0.006135923151542565) q[15],q[6]; +cu1(0.0030679615757712823) q[16],q[6]; +cu1(0.0015339807878856412) q[17],q[6]; +cu1(0.0007669903939428206) q[18],q[6]; +cu1(0.0003834951969714103) q[19],q[6]; +cu1(0.00019174759848570515) q[20],q[6]; +cu1(9.587379924285257e-05) q[21],q[6]; +cu1(4.7936899621426287e-05) q[22],q[6]; +cu1(2.3968449810713143e-05) q[23],q[6]; +cu1(1.1984224905356572e-05) q[24],q[6]; +cu1(5.992112452678286e-06) q[25],q[6]; +cu1(2.996056226339143e-06) q[26],q[6]; +cu1(1.4980281131695715e-06) q[27],q[6]; +cu1(7.490140565847857e-07) q[28],q[6]; +cu1(3.7450702829239286e-07) q[29],q[6]; +h q[7]; +cu1(1.5707963267948966) q[8],q[7]; +cu1(0.7853981633974483) q[9],q[7]; +cu1(0.39269908169872414) q[10],q[7]; +cu1(0.19634954084936207) q[11],q[7]; +cu1(0.09817477042468103) q[12],q[7]; +cu1(0.04908738521234052) q[13],q[7]; +cu1(0.02454369260617026) q[14],q[7]; +cu1(0.01227184630308513) q[15],q[7]; +cu1(0.006135923151542565) q[16],q[7]; +cu1(0.0030679615757712823) q[17],q[7]; +cu1(0.0015339807878856412) q[18],q[7]; +cu1(0.0007669903939428206) q[19],q[7]; +cu1(0.0003834951969714103) q[20],q[7]; +cu1(0.00019174759848570515) q[21],q[7]; +cu1(9.587379924285257e-05) q[22],q[7]; +cu1(4.7936899621426287e-05) q[23],q[7]; +cu1(2.3968449810713143e-05) q[24],q[7]; +cu1(1.1984224905356572e-05) q[25],q[7]; +cu1(5.992112452678286e-06) q[26],q[7]; +cu1(2.996056226339143e-06) q[27],q[7]; +cu1(1.4980281131695715e-06) q[28],q[7]; +cu1(7.490140565847857e-07) q[29],q[7]; +h q[8]; +cu1(1.5707963267948966) q[9],q[8]; +cu1(0.7853981633974483) q[10],q[8]; +cu1(0.39269908169872414) q[11],q[8]; +cu1(0.19634954084936207) q[12],q[8]; +cu1(0.09817477042468103) q[13],q[8]; +cu1(0.04908738521234052) q[14],q[8]; +cu1(0.02454369260617026) q[15],q[8]; +cu1(0.01227184630308513) q[16],q[8]; +cu1(0.006135923151542565) q[17],q[8]; +cu1(0.0030679615757712823) q[18],q[8]; +cu1(0.0015339807878856412) q[19],q[8]; +cu1(0.0007669903939428206) q[20],q[8]; +cu1(0.0003834951969714103) q[21],q[8]; +cu1(0.00019174759848570515) q[22],q[8]; +cu1(9.587379924285257e-05) q[23],q[8]; +cu1(4.7936899621426287e-05) q[24],q[8]; +cu1(2.3968449810713143e-05) q[25],q[8]; +cu1(1.1984224905356572e-05) q[26],q[8]; +cu1(5.992112452678286e-06) q[27],q[8]; +cu1(2.996056226339143e-06) q[28],q[8]; +cu1(1.4980281131695715e-06) q[29],q[8]; +h q[9]; +cu1(1.5707963267948966) q[10],q[9]; +cu1(0.7853981633974483) q[11],q[9]; +cu1(0.39269908169872414) q[12],q[9]; +cu1(0.19634954084936207) q[13],q[9]; +cu1(0.09817477042468103) q[14],q[9]; +cu1(0.04908738521234052) q[15],q[9]; +cu1(0.02454369260617026) q[16],q[9]; +cu1(0.01227184630308513) q[17],q[9]; +cu1(0.006135923151542565) q[18],q[9]; +cu1(0.0030679615757712823) q[19],q[9]; +cu1(0.0015339807878856412) q[20],q[9]; +cu1(0.0007669903939428206) q[21],q[9]; +cu1(0.0003834951969714103) q[22],q[9]; +cu1(0.00019174759848570515) q[23],q[9]; +cu1(9.587379924285257e-05) q[24],q[9]; +cu1(4.7936899621426287e-05) q[25],q[9]; +cu1(2.3968449810713143e-05) q[26],q[9]; +cu1(1.1984224905356572e-05) q[27],q[9]; +cu1(5.992112452678286e-06) q[28],q[9]; +cu1(2.996056226339143e-06) q[29],q[9]; +h q[10]; +cu1(1.5707963267948966) q[11],q[10]; +cu1(0.7853981633974483) q[12],q[10]; +cu1(0.39269908169872414) q[13],q[10]; +cu1(0.19634954084936207) q[14],q[10]; +cu1(0.09817477042468103) q[15],q[10]; +cu1(0.04908738521234052) q[16],q[10]; +cu1(0.02454369260617026) q[17],q[10]; +cu1(0.01227184630308513) q[18],q[10]; +cu1(0.006135923151542565) q[19],q[10]; +cu1(0.0030679615757712823) q[20],q[10]; +cu1(0.0015339807878856412) q[21],q[10]; +cu1(0.0007669903939428206) q[22],q[10]; +cu1(0.0003834951969714103) q[23],q[10]; +cu1(0.00019174759848570515) q[24],q[10]; +cu1(9.587379924285257e-05) q[25],q[10]; +cu1(4.7936899621426287e-05) q[26],q[10]; +cu1(2.3968449810713143e-05) q[27],q[10]; +cu1(1.1984224905356572e-05) q[28],q[10]; +cu1(5.992112452678286e-06) q[29],q[10]; +h q[11]; +cu1(1.5707963267948966) q[12],q[11]; +cu1(0.7853981633974483) q[13],q[11]; +cu1(0.39269908169872414) q[14],q[11]; +cu1(0.19634954084936207) q[15],q[11]; +cu1(0.09817477042468103) q[16],q[11]; +cu1(0.04908738521234052) q[17],q[11]; +cu1(0.02454369260617026) q[18],q[11]; +cu1(0.01227184630308513) q[19],q[11]; +cu1(0.006135923151542565) q[20],q[11]; +cu1(0.0030679615757712823) q[21],q[11]; +cu1(0.0015339807878856412) q[22],q[11]; +cu1(0.0007669903939428206) q[23],q[11]; +cu1(0.0003834951969714103) q[24],q[11]; +cu1(0.00019174759848570515) q[25],q[11]; +cu1(9.587379924285257e-05) q[26],q[11]; +cu1(4.7936899621426287e-05) q[27],q[11]; +cu1(2.3968449810713143e-05) q[28],q[11]; +cu1(1.1984224905356572e-05) q[29],q[11]; +h q[12]; +cu1(1.5707963267948966) q[13],q[12]; +cu1(0.7853981633974483) q[14],q[12]; +cu1(0.39269908169872414) q[15],q[12]; +cu1(0.19634954084936207) q[16],q[12]; +cu1(0.09817477042468103) q[17],q[12]; +cu1(0.04908738521234052) q[18],q[12]; +cu1(0.02454369260617026) q[19],q[12]; +cu1(0.01227184630308513) q[20],q[12]; +cu1(0.006135923151542565) q[21],q[12]; +cu1(0.0030679615757712823) q[22],q[12]; +cu1(0.0015339807878856412) q[23],q[12]; +cu1(0.0007669903939428206) q[24],q[12]; +cu1(0.0003834951969714103) q[25],q[12]; +cu1(0.00019174759848570515) q[26],q[12]; +cu1(9.587379924285257e-05) q[27],q[12]; +cu1(4.7936899621426287e-05) q[28],q[12]; +cu1(2.3968449810713143e-05) q[29],q[12]; +h q[13]; +cu1(1.5707963267948966) q[14],q[13]; +cu1(0.7853981633974483) q[15],q[13]; +cu1(0.39269908169872414) q[16],q[13]; +cu1(0.19634954084936207) q[17],q[13]; +cu1(0.09817477042468103) q[18],q[13]; +cu1(0.04908738521234052) q[19],q[13]; +cu1(0.02454369260617026) q[20],q[13]; +cu1(0.01227184630308513) q[21],q[13]; +cu1(0.006135923151542565) q[22],q[13]; +cu1(0.0030679615757712823) q[23],q[13]; +cu1(0.0015339807878856412) q[24],q[13]; +cu1(0.0007669903939428206) q[25],q[13]; +cu1(0.0003834951969714103) q[26],q[13]; +cu1(0.00019174759848570515) q[27],q[13]; +cu1(9.587379924285257e-05) q[28],q[13]; +cu1(4.7936899621426287e-05) q[29],q[13]; +h q[14]; +cu1(1.5707963267948966) q[15],q[14]; +cu1(0.7853981633974483) q[16],q[14]; +cu1(0.39269908169872414) q[17],q[14]; +cu1(0.19634954084936207) q[18],q[14]; +cu1(0.09817477042468103) q[19],q[14]; +cu1(0.04908738521234052) q[20],q[14]; +cu1(0.02454369260617026) q[21],q[14]; +cu1(0.01227184630308513) q[22],q[14]; +cu1(0.006135923151542565) q[23],q[14]; +cu1(0.0030679615757712823) q[24],q[14]; +cu1(0.0015339807878856412) q[25],q[14]; +cu1(0.0007669903939428206) q[26],q[14]; +cu1(0.0003834951969714103) q[27],q[14]; +cu1(0.00019174759848570515) q[28],q[14]; +cu1(9.587379924285257e-05) q[29],q[14]; +h q[15]; +cu1(1.5707963267948966) q[16],q[15]; +cu1(0.7853981633974483) q[17],q[15]; +cu1(0.39269908169872414) q[18],q[15]; +cu1(0.19634954084936207) q[19],q[15]; +cu1(0.09817477042468103) q[20],q[15]; +cu1(0.04908738521234052) q[21],q[15]; +cu1(0.02454369260617026) q[22],q[15]; +cu1(0.01227184630308513) q[23],q[15]; +cu1(0.006135923151542565) q[24],q[15]; +cu1(0.0030679615757712823) q[25],q[15]; +cu1(0.0015339807878856412) q[26],q[15]; +cu1(0.0007669903939428206) q[27],q[15]; +cu1(0.0003834951969714103) q[28],q[15]; +cu1(0.00019174759848570515) q[29],q[15]; +h q[16]; +cu1(1.5707963267948966) q[17],q[16]; +cu1(0.7853981633974483) q[18],q[16]; +cu1(0.39269908169872414) q[19],q[16]; +cu1(0.19634954084936207) q[20],q[16]; +cu1(0.09817477042468103) q[21],q[16]; +cu1(0.04908738521234052) q[22],q[16]; +cu1(0.02454369260617026) q[23],q[16]; +cu1(0.01227184630308513) q[24],q[16]; +cu1(0.006135923151542565) q[25],q[16]; +cu1(0.0030679615757712823) q[26],q[16]; +cu1(0.0015339807878856412) q[27],q[16]; +cu1(0.0007669903939428206) q[28],q[16]; +cu1(0.0003834951969714103) q[29],q[16]; +h q[17]; +cu1(1.5707963267948966) q[18],q[17]; +cu1(0.7853981633974483) q[19],q[17]; +cu1(0.39269908169872414) q[20],q[17]; +cu1(0.19634954084936207) q[21],q[17]; +cu1(0.09817477042468103) q[22],q[17]; +cu1(0.04908738521234052) q[23],q[17]; +cu1(0.02454369260617026) q[24],q[17]; +cu1(0.01227184630308513) q[25],q[17]; +cu1(0.006135923151542565) q[26],q[17]; +cu1(0.0030679615757712823) q[27],q[17]; +cu1(0.0015339807878856412) q[28],q[17]; +cu1(0.0007669903939428206) q[29],q[17]; +h q[18]; +cu1(1.5707963267948966) q[19],q[18]; +cu1(0.7853981633974483) q[20],q[18]; +cu1(0.39269908169872414) q[21],q[18]; +cu1(0.19634954084936207) q[22],q[18]; +cu1(0.09817477042468103) q[23],q[18]; +cu1(0.04908738521234052) q[24],q[18]; +cu1(0.02454369260617026) q[25],q[18]; +cu1(0.01227184630308513) q[26],q[18]; +cu1(0.006135923151542565) q[27],q[18]; +cu1(0.0030679615757712823) q[28],q[18]; +cu1(0.0015339807878856412) q[29],q[18]; +h q[19]; +cu1(1.5707963267948966) q[20],q[19]; +cu1(0.7853981633974483) q[21],q[19]; +cu1(0.39269908169872414) q[22],q[19]; +cu1(0.19634954084936207) q[23],q[19]; +cu1(0.09817477042468103) q[24],q[19]; +cu1(0.04908738521234052) q[25],q[19]; +cu1(0.02454369260617026) q[26],q[19]; +cu1(0.01227184630308513) q[27],q[19]; +cu1(0.006135923151542565) q[28],q[19]; +cu1(0.0030679615757712823) q[29],q[19]; +h q[20]; +cu1(1.5707963267948966) q[21],q[20]; +cu1(0.7853981633974483) q[22],q[20]; +cu1(0.39269908169872414) q[23],q[20]; +cu1(0.19634954084936207) q[24],q[20]; +cu1(0.09817477042468103) q[25],q[20]; +cu1(0.04908738521234052) q[26],q[20]; +cu1(0.02454369260617026) q[27],q[20]; +cu1(0.01227184630308513) q[28],q[20]; +cu1(0.006135923151542565) q[29],q[20]; +h q[21]; +cu1(1.5707963267948966) q[22],q[21]; +cu1(0.7853981633974483) q[23],q[21]; +cu1(0.39269908169872414) q[24],q[21]; +cu1(0.19634954084936207) q[25],q[21]; +cu1(0.09817477042468103) q[26],q[21]; +cu1(0.04908738521234052) q[27],q[21]; +cu1(0.02454369260617026) q[28],q[21]; +cu1(0.01227184630308513) q[29],q[21]; +h q[22]; +cu1(1.5707963267948966) q[23],q[22]; +cu1(0.7853981633974483) q[24],q[22]; +cu1(0.39269908169872414) q[25],q[22]; +cu1(0.19634954084936207) q[26],q[22]; +cu1(0.09817477042468103) q[27],q[22]; +cu1(0.04908738521234052) q[28],q[22]; +cu1(0.02454369260617026) q[29],q[22]; +h q[23]; +cu1(1.5707963267948966) q[24],q[23]; +cu1(0.7853981633974483) q[25],q[23]; +cu1(0.39269908169872414) q[26],q[23]; +cu1(0.19634954084936207) q[27],q[23]; +cu1(0.09817477042468103) q[28],q[23]; +cu1(0.04908738521234052) q[29],q[23]; +h q[24]; +cu1(1.5707963267948966) q[25],q[24]; +cu1(0.7853981633974483) q[26],q[24]; +cu1(0.39269908169872414) q[27],q[24]; +cu1(0.19634954084936207) q[28],q[24]; +cu1(0.09817477042468103) q[29],q[24]; +h q[25]; +cu1(1.5707963267948966) q[26],q[25]; +cu1(0.7853981633974483) q[27],q[25]; +cu1(0.39269908169872414) q[28],q[25]; +cu1(0.19634954084936207) q[29],q[25]; +h q[26]; +cu1(1.5707963267948966) q[27],q[26]; +cu1(0.7853981633974483) q[28],q[26]; +cu1(0.39269908169872414) q[29],q[26]; +h q[27]; +cu1(1.5707963267948966) q[28],q[27]; +cu1(0.7853981633974483) q[29],q[27]; +h q[28]; +cu1(1.5707963267948966) q[29],q[28]; +h q[29]; diff --git a/QASM_files/qft_62qubits.qasm b/QASM_files/qft_62qubits.qasm new file mode 100644 index 0000000..de6969a --- /dev/null +++ b/QASM_files/qft_62qubits.qasm @@ -0,0 +1,1958 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[62]; +creg c[62]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +cu1(0.04908738521234052) q[6],q[0]; +cu1(0.02454369260617026) q[7],q[0]; +cu1(0.01227184630308513) q[8],q[0]; +cu1(0.006135923151542565) q[9],q[0]; +cu1(0.0030679615757712823) q[10],q[0]; +cu1(0.0015339807878856412) q[11],q[0]; +cu1(0.0007669903939428206) q[12],q[0]; +cu1(0.0003834951969714103) q[13],q[0]; +cu1(0.00019174759848570515) q[14],q[0]; +cu1(9.587379924285257e-05) q[15],q[0]; +cu1(4.7936899621426287e-05) q[16],q[0]; +cu1(2.3968449810713143e-05) q[17],q[0]; +cu1(1.1984224905356572e-05) q[18],q[0]; +cu1(5.992112452678286e-06) q[19],q[0]; +cu1(2.996056226339143e-06) q[20],q[0]; +cu1(1.4980281131695715e-06) q[21],q[0]; +cu1(7.490140565847857e-07) q[22],q[0]; +cu1(3.7450702829239286e-07) q[23],q[0]; +cu1(1.8725351414619643e-07) q[24],q[0]; +cu1(9.362675707309822e-08) q[25],q[0]; +cu1(4.681337853654911e-08) q[26],q[0]; +cu1(2.3406689268274554e-08) q[27],q[0]; +cu1(1.1703344634137277e-08) q[28],q[0]; +cu1(5.8516723170686385e-09) q[29],q[0]; +cu1(2.9258361585343192e-09) q[30],q[0]; +cu1(1.4629180792671596e-09) q[31],q[0]; +cu1(7.314590396335798e-10) q[32],q[0]; +cu1(3.657295198167899e-10) q[33],q[0]; +cu1(1.8286475990839495e-10) q[34],q[0]; +cu1(9.143237995419748e-11) q[35],q[0]; +cu1(4.571618997709874e-11) q[36],q[0]; +cu1(2.285809498854937e-11) q[37],q[0]; +cu1(1.1429047494274685e-11) q[38],q[0]; +cu1(5.714523747137342e-12) q[39],q[0]; +cu1(2.857261873568671e-12) q[40],q[0]; +cu1(1.4286309367843356e-12) q[41],q[0]; +cu1(7.143154683921678e-13) q[42],q[0]; +cu1(3.571577341960839e-13) q[43],q[0]; +cu1(1.7857886709804195e-13) q[44],q[0]; +cu1(8.928943354902097e-14) q[45],q[0]; +cu1(4.4644716774510487e-14) q[46],q[0]; +cu1(2.2322358387255243e-14) q[47],q[0]; +cu1(1.1161179193627622e-14) q[48],q[0]; +cu1(5.580589596813811e-15) q[49],q[0]; +cu1(2.7902947984069054e-15) q[50],q[0]; +cu1(1.3951473992034527e-15) q[51],q[0]; +cu1(6.975736996017264e-16) q[52],q[0]; +cu1(3.487868498008632e-16) q[53],q[0]; +cu1(1.743934249004316e-16) q[54],q[0]; +cu1(8.71967124502158e-17) q[55],q[0]; +cu1(4.35983562251079e-17) q[56],q[0]; +cu1(2.179917811255395e-17) q[57],q[0]; +cu1(1.0899589056276974e-17) q[58],q[0]; +cu1(5.449794528138487e-18) q[59],q[0]; +cu1(2.7248972640692436e-18) q[60],q[0]; +cu1(1.3624486320346218e-18) q[61],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +cu1(0.09817477042468103) q[6],q[1]; +cu1(0.04908738521234052) q[7],q[1]; +cu1(0.02454369260617026) q[8],q[1]; +cu1(0.01227184630308513) q[9],q[1]; +cu1(0.006135923151542565) q[10],q[1]; +cu1(0.0030679615757712823) q[11],q[1]; +cu1(0.0015339807878856412) q[12],q[1]; +cu1(0.0007669903939428206) q[13],q[1]; +cu1(0.0003834951969714103) q[14],q[1]; +cu1(0.00019174759848570515) q[15],q[1]; +cu1(9.587379924285257e-05) q[16],q[1]; +cu1(4.7936899621426287e-05) q[17],q[1]; +cu1(2.3968449810713143e-05) q[18],q[1]; +cu1(1.1984224905356572e-05) q[19],q[1]; +cu1(5.992112452678286e-06) q[20],q[1]; +cu1(2.996056226339143e-06) q[21],q[1]; +cu1(1.4980281131695715e-06) q[22],q[1]; +cu1(7.490140565847857e-07) q[23],q[1]; +cu1(3.7450702829239286e-07) q[24],q[1]; +cu1(1.8725351414619643e-07) q[25],q[1]; +cu1(9.362675707309822e-08) q[26],q[1]; +cu1(4.681337853654911e-08) q[27],q[1]; +cu1(2.3406689268274554e-08) q[28],q[1]; +cu1(1.1703344634137277e-08) q[29],q[1]; +cu1(5.8516723170686385e-09) q[30],q[1]; +cu1(2.9258361585343192e-09) q[31],q[1]; +cu1(1.4629180792671596e-09) q[32],q[1]; +cu1(7.314590396335798e-10) q[33],q[1]; +cu1(3.657295198167899e-10) q[34],q[1]; +cu1(1.8286475990839495e-10) q[35],q[1]; +cu1(9.143237995419748e-11) q[36],q[1]; +cu1(4.571618997709874e-11) q[37],q[1]; +cu1(2.285809498854937e-11) q[38],q[1]; +cu1(1.1429047494274685e-11) q[39],q[1]; +cu1(5.714523747137342e-12) q[40],q[1]; +cu1(2.857261873568671e-12) q[41],q[1]; +cu1(1.4286309367843356e-12) q[42],q[1]; +cu1(7.143154683921678e-13) q[43],q[1]; +cu1(3.571577341960839e-13) q[44],q[1]; +cu1(1.7857886709804195e-13) q[45],q[1]; +cu1(8.928943354902097e-14) q[46],q[1]; +cu1(4.4644716774510487e-14) q[47],q[1]; +cu1(2.2322358387255243e-14) q[48],q[1]; +cu1(1.1161179193627622e-14) q[49],q[1]; +cu1(5.580589596813811e-15) q[50],q[1]; +cu1(2.7902947984069054e-15) q[51],q[1]; +cu1(1.3951473992034527e-15) q[52],q[1]; +cu1(6.975736996017264e-16) q[53],q[1]; +cu1(3.487868498008632e-16) q[54],q[1]; +cu1(1.743934249004316e-16) q[55],q[1]; +cu1(8.71967124502158e-17) q[56],q[1]; +cu1(4.35983562251079e-17) q[57],q[1]; +cu1(2.179917811255395e-17) q[58],q[1]; +cu1(1.0899589056276974e-17) q[59],q[1]; +cu1(5.449794528138487e-18) q[60],q[1]; +cu1(2.7248972640692436e-18) q[61],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +cu1(0.19634954084936207) q[6],q[2]; +cu1(0.09817477042468103) q[7],q[2]; +cu1(0.04908738521234052) q[8],q[2]; +cu1(0.02454369260617026) q[9],q[2]; +cu1(0.01227184630308513) q[10],q[2]; +cu1(0.006135923151542565) q[11],q[2]; +cu1(0.0030679615757712823) q[12],q[2]; +cu1(0.0015339807878856412) q[13],q[2]; +cu1(0.0007669903939428206) q[14],q[2]; +cu1(0.0003834951969714103) q[15],q[2]; +cu1(0.00019174759848570515) q[16],q[2]; +cu1(9.587379924285257e-05) q[17],q[2]; +cu1(4.7936899621426287e-05) q[18],q[2]; +cu1(2.3968449810713143e-05) q[19],q[2]; +cu1(1.1984224905356572e-05) q[20],q[2]; +cu1(5.992112452678286e-06) q[21],q[2]; +cu1(2.996056226339143e-06) q[22],q[2]; +cu1(1.4980281131695715e-06) q[23],q[2]; +cu1(7.490140565847857e-07) q[24],q[2]; +cu1(3.7450702829239286e-07) q[25],q[2]; +cu1(1.8725351414619643e-07) q[26],q[2]; +cu1(9.362675707309822e-08) q[27],q[2]; +cu1(4.681337853654911e-08) q[28],q[2]; +cu1(2.3406689268274554e-08) q[29],q[2]; +cu1(1.1703344634137277e-08) q[30],q[2]; +cu1(5.8516723170686385e-09) q[31],q[2]; +cu1(2.9258361585343192e-09) q[32],q[2]; +cu1(1.4629180792671596e-09) q[33],q[2]; +cu1(7.314590396335798e-10) q[34],q[2]; +cu1(3.657295198167899e-10) q[35],q[2]; +cu1(1.8286475990839495e-10) q[36],q[2]; +cu1(9.143237995419748e-11) q[37],q[2]; +cu1(4.571618997709874e-11) q[38],q[2]; +cu1(2.285809498854937e-11) q[39],q[2]; +cu1(1.1429047494274685e-11) q[40],q[2]; +cu1(5.714523747137342e-12) q[41],q[2]; +cu1(2.857261873568671e-12) q[42],q[2]; +cu1(1.4286309367843356e-12) q[43],q[2]; +cu1(7.143154683921678e-13) q[44],q[2]; +cu1(3.571577341960839e-13) q[45],q[2]; +cu1(1.7857886709804195e-13) q[46],q[2]; +cu1(8.928943354902097e-14) q[47],q[2]; +cu1(4.4644716774510487e-14) q[48],q[2]; +cu1(2.2322358387255243e-14) q[49],q[2]; +cu1(1.1161179193627622e-14) q[50],q[2]; +cu1(5.580589596813811e-15) q[51],q[2]; +cu1(2.7902947984069054e-15) q[52],q[2]; +cu1(1.3951473992034527e-15) q[53],q[2]; +cu1(6.975736996017264e-16) q[54],q[2]; +cu1(3.487868498008632e-16) q[55],q[2]; +cu1(1.743934249004316e-16) q[56],q[2]; +cu1(8.71967124502158e-17) q[57],q[2]; +cu1(4.35983562251079e-17) q[58],q[2]; +cu1(2.179917811255395e-17) q[59],q[2]; +cu1(1.0899589056276974e-17) q[60],q[2]; +cu1(5.449794528138487e-18) q[61],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +cu1(0.39269908169872414) q[6],q[3]; +cu1(0.19634954084936207) q[7],q[3]; +cu1(0.09817477042468103) q[8],q[3]; +cu1(0.04908738521234052) q[9],q[3]; +cu1(0.02454369260617026) q[10],q[3]; +cu1(0.01227184630308513) q[11],q[3]; +cu1(0.006135923151542565) q[12],q[3]; +cu1(0.0030679615757712823) q[13],q[3]; +cu1(0.0015339807878856412) q[14],q[3]; +cu1(0.0007669903939428206) q[15],q[3]; +cu1(0.0003834951969714103) q[16],q[3]; +cu1(0.00019174759848570515) q[17],q[3]; +cu1(9.587379924285257e-05) q[18],q[3]; +cu1(4.7936899621426287e-05) q[19],q[3]; +cu1(2.3968449810713143e-05) q[20],q[3]; +cu1(1.1984224905356572e-05) q[21],q[3]; +cu1(5.992112452678286e-06) q[22],q[3]; +cu1(2.996056226339143e-06) q[23],q[3]; +cu1(1.4980281131695715e-06) q[24],q[3]; +cu1(7.490140565847857e-07) q[25],q[3]; +cu1(3.7450702829239286e-07) q[26],q[3]; +cu1(1.8725351414619643e-07) q[27],q[3]; +cu1(9.362675707309822e-08) q[28],q[3]; +cu1(4.681337853654911e-08) q[29],q[3]; +cu1(2.3406689268274554e-08) q[30],q[3]; +cu1(1.1703344634137277e-08) q[31],q[3]; +cu1(5.8516723170686385e-09) q[32],q[3]; +cu1(2.9258361585343192e-09) q[33],q[3]; +cu1(1.4629180792671596e-09) q[34],q[3]; +cu1(7.314590396335798e-10) q[35],q[3]; +cu1(3.657295198167899e-10) q[36],q[3]; +cu1(1.8286475990839495e-10) q[37],q[3]; +cu1(9.143237995419748e-11) q[38],q[3]; +cu1(4.571618997709874e-11) q[39],q[3]; +cu1(2.285809498854937e-11) q[40],q[3]; +cu1(1.1429047494274685e-11) q[41],q[3]; +cu1(5.714523747137342e-12) q[42],q[3]; +cu1(2.857261873568671e-12) q[43],q[3]; +cu1(1.4286309367843356e-12) q[44],q[3]; +cu1(7.143154683921678e-13) q[45],q[3]; +cu1(3.571577341960839e-13) q[46],q[3]; +cu1(1.7857886709804195e-13) q[47],q[3]; +cu1(8.928943354902097e-14) q[48],q[3]; +cu1(4.4644716774510487e-14) q[49],q[3]; +cu1(2.2322358387255243e-14) q[50],q[3]; +cu1(1.1161179193627622e-14) q[51],q[3]; +cu1(5.580589596813811e-15) q[52],q[3]; +cu1(2.7902947984069054e-15) q[53],q[3]; +cu1(1.3951473992034527e-15) q[54],q[3]; +cu1(6.975736996017264e-16) q[55],q[3]; +cu1(3.487868498008632e-16) q[56],q[3]; +cu1(1.743934249004316e-16) q[57],q[3]; +cu1(8.71967124502158e-17) q[58],q[3]; +cu1(4.35983562251079e-17) q[59],q[3]; +cu1(2.179917811255395e-17) q[60],q[3]; +cu1(1.0899589056276974e-17) q[61],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +cu1(0.7853981633974483) q[6],q[4]; +cu1(0.39269908169872414) q[7],q[4]; +cu1(0.19634954084936207) q[8],q[4]; +cu1(0.09817477042468103) q[9],q[4]; +cu1(0.04908738521234052) q[10],q[4]; +cu1(0.02454369260617026) q[11],q[4]; +cu1(0.01227184630308513) q[12],q[4]; +cu1(0.006135923151542565) q[13],q[4]; +cu1(0.0030679615757712823) q[14],q[4]; +cu1(0.0015339807878856412) q[15],q[4]; +cu1(0.0007669903939428206) q[16],q[4]; +cu1(0.0003834951969714103) q[17],q[4]; +cu1(0.00019174759848570515) q[18],q[4]; +cu1(9.587379924285257e-05) q[19],q[4]; +cu1(4.7936899621426287e-05) q[20],q[4]; +cu1(2.3968449810713143e-05) q[21],q[4]; +cu1(1.1984224905356572e-05) q[22],q[4]; +cu1(5.992112452678286e-06) q[23],q[4]; +cu1(2.996056226339143e-06) q[24],q[4]; +cu1(1.4980281131695715e-06) q[25],q[4]; +cu1(7.490140565847857e-07) q[26],q[4]; +cu1(3.7450702829239286e-07) q[27],q[4]; +cu1(1.8725351414619643e-07) q[28],q[4]; +cu1(9.362675707309822e-08) q[29],q[4]; +cu1(4.681337853654911e-08) q[30],q[4]; +cu1(2.3406689268274554e-08) q[31],q[4]; +cu1(1.1703344634137277e-08) q[32],q[4]; +cu1(5.8516723170686385e-09) q[33],q[4]; +cu1(2.9258361585343192e-09) q[34],q[4]; +cu1(1.4629180792671596e-09) q[35],q[4]; +cu1(7.314590396335798e-10) q[36],q[4]; +cu1(3.657295198167899e-10) q[37],q[4]; +cu1(1.8286475990839495e-10) q[38],q[4]; +cu1(9.143237995419748e-11) q[39],q[4]; +cu1(4.571618997709874e-11) q[40],q[4]; +cu1(2.285809498854937e-11) q[41],q[4]; +cu1(1.1429047494274685e-11) q[42],q[4]; +cu1(5.714523747137342e-12) q[43],q[4]; +cu1(2.857261873568671e-12) q[44],q[4]; +cu1(1.4286309367843356e-12) q[45],q[4]; +cu1(7.143154683921678e-13) q[46],q[4]; +cu1(3.571577341960839e-13) q[47],q[4]; +cu1(1.7857886709804195e-13) q[48],q[4]; +cu1(8.928943354902097e-14) q[49],q[4]; +cu1(4.4644716774510487e-14) q[50],q[4]; +cu1(2.2322358387255243e-14) q[51],q[4]; +cu1(1.1161179193627622e-14) q[52],q[4]; +cu1(5.580589596813811e-15) q[53],q[4]; +cu1(2.7902947984069054e-15) q[54],q[4]; +cu1(1.3951473992034527e-15) q[55],q[4]; +cu1(6.975736996017264e-16) q[56],q[4]; +cu1(3.487868498008632e-16) q[57],q[4]; +cu1(1.743934249004316e-16) q[58],q[4]; +cu1(8.71967124502158e-17) q[59],q[4]; +cu1(4.35983562251079e-17) q[60],q[4]; +cu1(2.179917811255395e-17) q[61],q[4]; +h q[5]; +cu1(1.5707963267948966) q[6],q[5]; +cu1(0.7853981633974483) q[7],q[5]; +cu1(0.39269908169872414) q[8],q[5]; +cu1(0.19634954084936207) q[9],q[5]; +cu1(0.09817477042468103) q[10],q[5]; +cu1(0.04908738521234052) q[11],q[5]; +cu1(0.02454369260617026) q[12],q[5]; +cu1(0.01227184630308513) q[13],q[5]; +cu1(0.006135923151542565) q[14],q[5]; +cu1(0.0030679615757712823) q[15],q[5]; +cu1(0.0015339807878856412) q[16],q[5]; +cu1(0.0007669903939428206) q[17],q[5]; +cu1(0.0003834951969714103) q[18],q[5]; +cu1(0.00019174759848570515) q[19],q[5]; +cu1(9.587379924285257e-05) q[20],q[5]; +cu1(4.7936899621426287e-05) q[21],q[5]; +cu1(2.3968449810713143e-05) q[22],q[5]; +cu1(1.1984224905356572e-05) q[23],q[5]; +cu1(5.992112452678286e-06) q[24],q[5]; +cu1(2.996056226339143e-06) q[25],q[5]; +cu1(1.4980281131695715e-06) q[26],q[5]; +cu1(7.490140565847857e-07) q[27],q[5]; +cu1(3.7450702829239286e-07) q[28],q[5]; +cu1(1.8725351414619643e-07) q[29],q[5]; +cu1(9.362675707309822e-08) q[30],q[5]; +cu1(4.681337853654911e-08) q[31],q[5]; +cu1(2.3406689268274554e-08) q[32],q[5]; +cu1(1.1703344634137277e-08) q[33],q[5]; +cu1(5.8516723170686385e-09) q[34],q[5]; +cu1(2.9258361585343192e-09) q[35],q[5]; +cu1(1.4629180792671596e-09) q[36],q[5]; +cu1(7.314590396335798e-10) q[37],q[5]; +cu1(3.657295198167899e-10) q[38],q[5]; +cu1(1.8286475990839495e-10) q[39],q[5]; +cu1(9.143237995419748e-11) q[40],q[5]; +cu1(4.571618997709874e-11) q[41],q[5]; +cu1(2.285809498854937e-11) q[42],q[5]; +cu1(1.1429047494274685e-11) q[43],q[5]; +cu1(5.714523747137342e-12) q[44],q[5]; +cu1(2.857261873568671e-12) q[45],q[5]; +cu1(1.4286309367843356e-12) q[46],q[5]; +cu1(7.143154683921678e-13) q[47],q[5]; +cu1(3.571577341960839e-13) q[48],q[5]; +cu1(1.7857886709804195e-13) q[49],q[5]; +cu1(8.928943354902097e-14) q[50],q[5]; +cu1(4.4644716774510487e-14) q[51],q[5]; +cu1(2.2322358387255243e-14) q[52],q[5]; +cu1(1.1161179193627622e-14) q[53],q[5]; +cu1(5.580589596813811e-15) q[54],q[5]; +cu1(2.7902947984069054e-15) q[55],q[5]; +cu1(1.3951473992034527e-15) q[56],q[5]; +cu1(6.975736996017264e-16) q[57],q[5]; +cu1(3.487868498008632e-16) q[58],q[5]; +cu1(1.743934249004316e-16) q[59],q[5]; +cu1(8.71967124502158e-17) q[60],q[5]; +cu1(4.35983562251079e-17) q[61],q[5]; +h q[6]; +cu1(1.5707963267948966) q[7],q[6]; +cu1(0.7853981633974483) q[8],q[6]; +cu1(0.39269908169872414) q[9],q[6]; +cu1(0.19634954084936207) q[10],q[6]; +cu1(0.09817477042468103) q[11],q[6]; +cu1(0.04908738521234052) q[12],q[6]; +cu1(0.02454369260617026) q[13],q[6]; +cu1(0.01227184630308513) q[14],q[6]; +cu1(0.006135923151542565) q[15],q[6]; +cu1(0.0030679615757712823) q[16],q[6]; +cu1(0.0015339807878856412) q[17],q[6]; +cu1(0.0007669903939428206) q[18],q[6]; +cu1(0.0003834951969714103) q[19],q[6]; +cu1(0.00019174759848570515) q[20],q[6]; +cu1(9.587379924285257e-05) q[21],q[6]; +cu1(4.7936899621426287e-05) q[22],q[6]; +cu1(2.3968449810713143e-05) q[23],q[6]; +cu1(1.1984224905356572e-05) q[24],q[6]; +cu1(5.992112452678286e-06) q[25],q[6]; +cu1(2.996056226339143e-06) q[26],q[6]; +cu1(1.4980281131695715e-06) q[27],q[6]; +cu1(7.490140565847857e-07) q[28],q[6]; +cu1(3.7450702829239286e-07) q[29],q[6]; +cu1(1.8725351414619643e-07) q[30],q[6]; +cu1(9.362675707309822e-08) q[31],q[6]; +cu1(4.681337853654911e-08) q[32],q[6]; +cu1(2.3406689268274554e-08) q[33],q[6]; +cu1(1.1703344634137277e-08) q[34],q[6]; +cu1(5.8516723170686385e-09) q[35],q[6]; +cu1(2.9258361585343192e-09) q[36],q[6]; +cu1(1.4629180792671596e-09) q[37],q[6]; +cu1(7.314590396335798e-10) q[38],q[6]; +cu1(3.657295198167899e-10) q[39],q[6]; +cu1(1.8286475990839495e-10) q[40],q[6]; +cu1(9.143237995419748e-11) q[41],q[6]; +cu1(4.571618997709874e-11) q[42],q[6]; +cu1(2.285809498854937e-11) q[43],q[6]; +cu1(1.1429047494274685e-11) q[44],q[6]; +cu1(5.714523747137342e-12) q[45],q[6]; +cu1(2.857261873568671e-12) q[46],q[6]; +cu1(1.4286309367843356e-12) q[47],q[6]; +cu1(7.143154683921678e-13) q[48],q[6]; +cu1(3.571577341960839e-13) q[49],q[6]; +cu1(1.7857886709804195e-13) q[50],q[6]; +cu1(8.928943354902097e-14) q[51],q[6]; +cu1(4.4644716774510487e-14) q[52],q[6]; +cu1(2.2322358387255243e-14) q[53],q[6]; +cu1(1.1161179193627622e-14) q[54],q[6]; +cu1(5.580589596813811e-15) q[55],q[6]; +cu1(2.7902947984069054e-15) q[56],q[6]; +cu1(1.3951473992034527e-15) q[57],q[6]; +cu1(6.975736996017264e-16) q[58],q[6]; +cu1(3.487868498008632e-16) q[59],q[6]; +cu1(1.743934249004316e-16) q[60],q[6]; +cu1(8.71967124502158e-17) q[61],q[6]; +h q[7]; +cu1(1.5707963267948966) q[8],q[7]; +cu1(0.7853981633974483) q[9],q[7]; +cu1(0.39269908169872414) q[10],q[7]; +cu1(0.19634954084936207) q[11],q[7]; +cu1(0.09817477042468103) q[12],q[7]; +cu1(0.04908738521234052) q[13],q[7]; +cu1(0.02454369260617026) q[14],q[7]; +cu1(0.01227184630308513) q[15],q[7]; +cu1(0.006135923151542565) q[16],q[7]; +cu1(0.0030679615757712823) q[17],q[7]; +cu1(0.0015339807878856412) q[18],q[7]; +cu1(0.0007669903939428206) q[19],q[7]; +cu1(0.0003834951969714103) q[20],q[7]; +cu1(0.00019174759848570515) q[21],q[7]; +cu1(9.587379924285257e-05) q[22],q[7]; +cu1(4.7936899621426287e-05) q[23],q[7]; +cu1(2.3968449810713143e-05) q[24],q[7]; +cu1(1.1984224905356572e-05) q[25],q[7]; +cu1(5.992112452678286e-06) q[26],q[7]; +cu1(2.996056226339143e-06) q[27],q[7]; +cu1(1.4980281131695715e-06) q[28],q[7]; +cu1(7.490140565847857e-07) q[29],q[7]; +cu1(3.7450702829239286e-07) q[30],q[7]; +cu1(1.8725351414619643e-07) q[31],q[7]; +cu1(9.362675707309822e-08) q[32],q[7]; +cu1(4.681337853654911e-08) q[33],q[7]; +cu1(2.3406689268274554e-08) q[34],q[7]; +cu1(1.1703344634137277e-08) q[35],q[7]; +cu1(5.8516723170686385e-09) q[36],q[7]; +cu1(2.9258361585343192e-09) q[37],q[7]; +cu1(1.4629180792671596e-09) q[38],q[7]; +cu1(7.314590396335798e-10) q[39],q[7]; +cu1(3.657295198167899e-10) q[40],q[7]; +cu1(1.8286475990839495e-10) q[41],q[7]; +cu1(9.143237995419748e-11) q[42],q[7]; +cu1(4.571618997709874e-11) q[43],q[7]; +cu1(2.285809498854937e-11) q[44],q[7]; +cu1(1.1429047494274685e-11) q[45],q[7]; +cu1(5.714523747137342e-12) q[46],q[7]; +cu1(2.857261873568671e-12) q[47],q[7]; +cu1(1.4286309367843356e-12) q[48],q[7]; +cu1(7.143154683921678e-13) q[49],q[7]; +cu1(3.571577341960839e-13) q[50],q[7]; +cu1(1.7857886709804195e-13) q[51],q[7]; +cu1(8.928943354902097e-14) q[52],q[7]; +cu1(4.4644716774510487e-14) q[53],q[7]; +cu1(2.2322358387255243e-14) q[54],q[7]; +cu1(1.1161179193627622e-14) q[55],q[7]; +cu1(5.580589596813811e-15) q[56],q[7]; +cu1(2.7902947984069054e-15) q[57],q[7]; +cu1(1.3951473992034527e-15) q[58],q[7]; +cu1(6.975736996017264e-16) q[59],q[7]; +cu1(3.487868498008632e-16) q[60],q[7]; +cu1(1.743934249004316e-16) q[61],q[7]; +h q[8]; +cu1(1.5707963267948966) q[9],q[8]; +cu1(0.7853981633974483) q[10],q[8]; +cu1(0.39269908169872414) q[11],q[8]; +cu1(0.19634954084936207) q[12],q[8]; +cu1(0.09817477042468103) q[13],q[8]; +cu1(0.04908738521234052) q[14],q[8]; +cu1(0.02454369260617026) q[15],q[8]; +cu1(0.01227184630308513) q[16],q[8]; +cu1(0.006135923151542565) q[17],q[8]; +cu1(0.0030679615757712823) q[18],q[8]; +cu1(0.0015339807878856412) q[19],q[8]; +cu1(0.0007669903939428206) q[20],q[8]; +cu1(0.0003834951969714103) q[21],q[8]; +cu1(0.00019174759848570515) q[22],q[8]; +cu1(9.587379924285257e-05) q[23],q[8]; +cu1(4.7936899621426287e-05) q[24],q[8]; +cu1(2.3968449810713143e-05) q[25],q[8]; +cu1(1.1984224905356572e-05) q[26],q[8]; +cu1(5.992112452678286e-06) q[27],q[8]; +cu1(2.996056226339143e-06) q[28],q[8]; +cu1(1.4980281131695715e-06) q[29],q[8]; +cu1(7.490140565847857e-07) q[30],q[8]; +cu1(3.7450702829239286e-07) q[31],q[8]; +cu1(1.8725351414619643e-07) q[32],q[8]; +cu1(9.362675707309822e-08) q[33],q[8]; +cu1(4.681337853654911e-08) q[34],q[8]; +cu1(2.3406689268274554e-08) q[35],q[8]; +cu1(1.1703344634137277e-08) q[36],q[8]; +cu1(5.8516723170686385e-09) q[37],q[8]; +cu1(2.9258361585343192e-09) q[38],q[8]; +cu1(1.4629180792671596e-09) q[39],q[8]; +cu1(7.314590396335798e-10) q[40],q[8]; +cu1(3.657295198167899e-10) q[41],q[8]; +cu1(1.8286475990839495e-10) q[42],q[8]; +cu1(9.143237995419748e-11) q[43],q[8]; +cu1(4.571618997709874e-11) q[44],q[8]; +cu1(2.285809498854937e-11) q[45],q[8]; +cu1(1.1429047494274685e-11) q[46],q[8]; +cu1(5.714523747137342e-12) q[47],q[8]; +cu1(2.857261873568671e-12) q[48],q[8]; +cu1(1.4286309367843356e-12) q[49],q[8]; +cu1(7.143154683921678e-13) q[50],q[8]; +cu1(3.571577341960839e-13) q[51],q[8]; +cu1(1.7857886709804195e-13) q[52],q[8]; +cu1(8.928943354902097e-14) q[53],q[8]; +cu1(4.4644716774510487e-14) q[54],q[8]; +cu1(2.2322358387255243e-14) q[55],q[8]; +cu1(1.1161179193627622e-14) q[56],q[8]; +cu1(5.580589596813811e-15) q[57],q[8]; +cu1(2.7902947984069054e-15) q[58],q[8]; +cu1(1.3951473992034527e-15) q[59],q[8]; +cu1(6.975736996017264e-16) q[60],q[8]; +cu1(3.487868498008632e-16) q[61],q[8]; +h q[9]; +cu1(1.5707963267948966) q[10],q[9]; +cu1(0.7853981633974483) q[11],q[9]; +cu1(0.39269908169872414) q[12],q[9]; +cu1(0.19634954084936207) q[13],q[9]; +cu1(0.09817477042468103) q[14],q[9]; +cu1(0.04908738521234052) q[15],q[9]; +cu1(0.02454369260617026) q[16],q[9]; +cu1(0.01227184630308513) q[17],q[9]; +cu1(0.006135923151542565) q[18],q[9]; +cu1(0.0030679615757712823) q[19],q[9]; +cu1(0.0015339807878856412) q[20],q[9]; +cu1(0.0007669903939428206) q[21],q[9]; +cu1(0.0003834951969714103) q[22],q[9]; +cu1(0.00019174759848570515) q[23],q[9]; +cu1(9.587379924285257e-05) q[24],q[9]; +cu1(4.7936899621426287e-05) q[25],q[9]; +cu1(2.3968449810713143e-05) q[26],q[9]; +cu1(1.1984224905356572e-05) q[27],q[9]; +cu1(5.992112452678286e-06) q[28],q[9]; +cu1(2.996056226339143e-06) q[29],q[9]; +cu1(1.4980281131695715e-06) q[30],q[9]; +cu1(7.490140565847857e-07) q[31],q[9]; +cu1(3.7450702829239286e-07) q[32],q[9]; +cu1(1.8725351414619643e-07) q[33],q[9]; +cu1(9.362675707309822e-08) q[34],q[9]; +cu1(4.681337853654911e-08) q[35],q[9]; +cu1(2.3406689268274554e-08) q[36],q[9]; +cu1(1.1703344634137277e-08) q[37],q[9]; +cu1(5.8516723170686385e-09) q[38],q[9]; +cu1(2.9258361585343192e-09) q[39],q[9]; +cu1(1.4629180792671596e-09) q[40],q[9]; +cu1(7.314590396335798e-10) q[41],q[9]; +cu1(3.657295198167899e-10) q[42],q[9]; +cu1(1.8286475990839495e-10) q[43],q[9]; +cu1(9.143237995419748e-11) q[44],q[9]; +cu1(4.571618997709874e-11) q[45],q[9]; +cu1(2.285809498854937e-11) q[46],q[9]; +cu1(1.1429047494274685e-11) q[47],q[9]; +cu1(5.714523747137342e-12) q[48],q[9]; +cu1(2.857261873568671e-12) q[49],q[9]; +cu1(1.4286309367843356e-12) q[50],q[9]; +cu1(7.143154683921678e-13) q[51],q[9]; +cu1(3.571577341960839e-13) q[52],q[9]; +cu1(1.7857886709804195e-13) q[53],q[9]; +cu1(8.928943354902097e-14) q[54],q[9]; +cu1(4.4644716774510487e-14) q[55],q[9]; +cu1(2.2322358387255243e-14) q[56],q[9]; +cu1(1.1161179193627622e-14) q[57],q[9]; +cu1(5.580589596813811e-15) q[58],q[9]; +cu1(2.7902947984069054e-15) q[59],q[9]; +cu1(1.3951473992034527e-15) q[60],q[9]; +cu1(6.975736996017264e-16) q[61],q[9]; +h q[10]; +cu1(1.5707963267948966) q[11],q[10]; +cu1(0.7853981633974483) q[12],q[10]; +cu1(0.39269908169872414) q[13],q[10]; +cu1(0.19634954084936207) q[14],q[10]; +cu1(0.09817477042468103) q[15],q[10]; +cu1(0.04908738521234052) q[16],q[10]; +cu1(0.02454369260617026) q[17],q[10]; +cu1(0.01227184630308513) q[18],q[10]; +cu1(0.006135923151542565) q[19],q[10]; +cu1(0.0030679615757712823) q[20],q[10]; +cu1(0.0015339807878856412) q[21],q[10]; +cu1(0.0007669903939428206) q[22],q[10]; +cu1(0.0003834951969714103) q[23],q[10]; +cu1(0.00019174759848570515) q[24],q[10]; +cu1(9.587379924285257e-05) q[25],q[10]; +cu1(4.7936899621426287e-05) q[26],q[10]; +cu1(2.3968449810713143e-05) q[27],q[10]; +cu1(1.1984224905356572e-05) q[28],q[10]; +cu1(5.992112452678286e-06) q[29],q[10]; +cu1(2.996056226339143e-06) q[30],q[10]; +cu1(1.4980281131695715e-06) q[31],q[10]; +cu1(7.490140565847857e-07) q[32],q[10]; +cu1(3.7450702829239286e-07) q[33],q[10]; +cu1(1.8725351414619643e-07) q[34],q[10]; +cu1(9.362675707309822e-08) q[35],q[10]; +cu1(4.681337853654911e-08) q[36],q[10]; +cu1(2.3406689268274554e-08) q[37],q[10]; +cu1(1.1703344634137277e-08) q[38],q[10]; +cu1(5.8516723170686385e-09) q[39],q[10]; +cu1(2.9258361585343192e-09) q[40],q[10]; +cu1(1.4629180792671596e-09) q[41],q[10]; +cu1(7.314590396335798e-10) q[42],q[10]; +cu1(3.657295198167899e-10) q[43],q[10]; +cu1(1.8286475990839495e-10) q[44],q[10]; +cu1(9.143237995419748e-11) q[45],q[10]; +cu1(4.571618997709874e-11) q[46],q[10]; +cu1(2.285809498854937e-11) q[47],q[10]; +cu1(1.1429047494274685e-11) q[48],q[10]; +cu1(5.714523747137342e-12) q[49],q[10]; +cu1(2.857261873568671e-12) q[50],q[10]; +cu1(1.4286309367843356e-12) q[51],q[10]; +cu1(7.143154683921678e-13) q[52],q[10]; +cu1(3.571577341960839e-13) q[53],q[10]; +cu1(1.7857886709804195e-13) q[54],q[10]; +cu1(8.928943354902097e-14) q[55],q[10]; +cu1(4.4644716774510487e-14) q[56],q[10]; +cu1(2.2322358387255243e-14) q[57],q[10]; +cu1(1.1161179193627622e-14) q[58],q[10]; +cu1(5.580589596813811e-15) q[59],q[10]; +cu1(2.7902947984069054e-15) q[60],q[10]; +cu1(1.3951473992034527e-15) q[61],q[10]; +h q[11]; +cu1(1.5707963267948966) q[12],q[11]; +cu1(0.7853981633974483) q[13],q[11]; +cu1(0.39269908169872414) q[14],q[11]; +cu1(0.19634954084936207) q[15],q[11]; +cu1(0.09817477042468103) q[16],q[11]; +cu1(0.04908738521234052) q[17],q[11]; +cu1(0.02454369260617026) q[18],q[11]; +cu1(0.01227184630308513) q[19],q[11]; +cu1(0.006135923151542565) q[20],q[11]; +cu1(0.0030679615757712823) q[21],q[11]; +cu1(0.0015339807878856412) q[22],q[11]; +cu1(0.0007669903939428206) q[23],q[11]; +cu1(0.0003834951969714103) q[24],q[11]; +cu1(0.00019174759848570515) q[25],q[11]; +cu1(9.587379924285257e-05) q[26],q[11]; +cu1(4.7936899621426287e-05) q[27],q[11]; +cu1(2.3968449810713143e-05) q[28],q[11]; +cu1(1.1984224905356572e-05) q[29],q[11]; +cu1(5.992112452678286e-06) q[30],q[11]; +cu1(2.996056226339143e-06) q[31],q[11]; +cu1(1.4980281131695715e-06) q[32],q[11]; +cu1(7.490140565847857e-07) q[33],q[11]; +cu1(3.7450702829239286e-07) q[34],q[11]; +cu1(1.8725351414619643e-07) q[35],q[11]; +cu1(9.362675707309822e-08) q[36],q[11]; +cu1(4.681337853654911e-08) q[37],q[11]; +cu1(2.3406689268274554e-08) q[38],q[11]; +cu1(1.1703344634137277e-08) q[39],q[11]; +cu1(5.8516723170686385e-09) q[40],q[11]; +cu1(2.9258361585343192e-09) q[41],q[11]; +cu1(1.4629180792671596e-09) q[42],q[11]; +cu1(7.314590396335798e-10) q[43],q[11]; +cu1(3.657295198167899e-10) q[44],q[11]; +cu1(1.8286475990839495e-10) q[45],q[11]; +cu1(9.143237995419748e-11) q[46],q[11]; +cu1(4.571618997709874e-11) q[47],q[11]; +cu1(2.285809498854937e-11) q[48],q[11]; +cu1(1.1429047494274685e-11) q[49],q[11]; +cu1(5.714523747137342e-12) q[50],q[11]; +cu1(2.857261873568671e-12) q[51],q[11]; +cu1(1.4286309367843356e-12) q[52],q[11]; +cu1(7.143154683921678e-13) q[53],q[11]; +cu1(3.571577341960839e-13) q[54],q[11]; +cu1(1.7857886709804195e-13) q[55],q[11]; +cu1(8.928943354902097e-14) q[56],q[11]; +cu1(4.4644716774510487e-14) q[57],q[11]; +cu1(2.2322358387255243e-14) q[58],q[11]; +cu1(1.1161179193627622e-14) q[59],q[11]; +cu1(5.580589596813811e-15) q[60],q[11]; +cu1(2.7902947984069054e-15) q[61],q[11]; +h q[12]; +cu1(1.5707963267948966) q[13],q[12]; +cu1(0.7853981633974483) q[14],q[12]; +cu1(0.39269908169872414) q[15],q[12]; +cu1(0.19634954084936207) q[16],q[12]; +cu1(0.09817477042468103) q[17],q[12]; +cu1(0.04908738521234052) q[18],q[12]; +cu1(0.02454369260617026) q[19],q[12]; +cu1(0.01227184630308513) q[20],q[12]; +cu1(0.006135923151542565) q[21],q[12]; +cu1(0.0030679615757712823) q[22],q[12]; +cu1(0.0015339807878856412) q[23],q[12]; +cu1(0.0007669903939428206) q[24],q[12]; +cu1(0.0003834951969714103) q[25],q[12]; +cu1(0.00019174759848570515) q[26],q[12]; +cu1(9.587379924285257e-05) q[27],q[12]; +cu1(4.7936899621426287e-05) q[28],q[12]; +cu1(2.3968449810713143e-05) q[29],q[12]; +cu1(1.1984224905356572e-05) q[30],q[12]; +cu1(5.992112452678286e-06) q[31],q[12]; +cu1(2.996056226339143e-06) q[32],q[12]; +cu1(1.4980281131695715e-06) q[33],q[12]; +cu1(7.490140565847857e-07) q[34],q[12]; +cu1(3.7450702829239286e-07) q[35],q[12]; +cu1(1.8725351414619643e-07) q[36],q[12]; +cu1(9.362675707309822e-08) q[37],q[12]; +cu1(4.681337853654911e-08) q[38],q[12]; +cu1(2.3406689268274554e-08) q[39],q[12]; +cu1(1.1703344634137277e-08) q[40],q[12]; +cu1(5.8516723170686385e-09) q[41],q[12]; +cu1(2.9258361585343192e-09) q[42],q[12]; +cu1(1.4629180792671596e-09) q[43],q[12]; +cu1(7.314590396335798e-10) q[44],q[12]; +cu1(3.657295198167899e-10) q[45],q[12]; +cu1(1.8286475990839495e-10) q[46],q[12]; +cu1(9.143237995419748e-11) q[47],q[12]; +cu1(4.571618997709874e-11) q[48],q[12]; +cu1(2.285809498854937e-11) q[49],q[12]; +cu1(1.1429047494274685e-11) q[50],q[12]; +cu1(5.714523747137342e-12) q[51],q[12]; +cu1(2.857261873568671e-12) q[52],q[12]; +cu1(1.4286309367843356e-12) q[53],q[12]; +cu1(7.143154683921678e-13) q[54],q[12]; +cu1(3.571577341960839e-13) q[55],q[12]; +cu1(1.7857886709804195e-13) q[56],q[12]; +cu1(8.928943354902097e-14) q[57],q[12]; +cu1(4.4644716774510487e-14) q[58],q[12]; +cu1(2.2322358387255243e-14) q[59],q[12]; +cu1(1.1161179193627622e-14) q[60],q[12]; +cu1(5.580589596813811e-15) q[61],q[12]; +h q[13]; +cu1(1.5707963267948966) q[14],q[13]; +cu1(0.7853981633974483) q[15],q[13]; +cu1(0.39269908169872414) q[16],q[13]; +cu1(0.19634954084936207) q[17],q[13]; +cu1(0.09817477042468103) q[18],q[13]; +cu1(0.04908738521234052) q[19],q[13]; +cu1(0.02454369260617026) q[20],q[13]; +cu1(0.01227184630308513) q[21],q[13]; +cu1(0.006135923151542565) q[22],q[13]; +cu1(0.0030679615757712823) q[23],q[13]; +cu1(0.0015339807878856412) q[24],q[13]; +cu1(0.0007669903939428206) q[25],q[13]; +cu1(0.0003834951969714103) q[26],q[13]; +cu1(0.00019174759848570515) q[27],q[13]; +cu1(9.587379924285257e-05) q[28],q[13]; +cu1(4.7936899621426287e-05) q[29],q[13]; +cu1(2.3968449810713143e-05) q[30],q[13]; +cu1(1.1984224905356572e-05) q[31],q[13]; +cu1(5.992112452678286e-06) q[32],q[13]; +cu1(2.996056226339143e-06) q[33],q[13]; +cu1(1.4980281131695715e-06) q[34],q[13]; +cu1(7.490140565847857e-07) q[35],q[13]; +cu1(3.7450702829239286e-07) q[36],q[13]; +cu1(1.8725351414619643e-07) q[37],q[13]; +cu1(9.362675707309822e-08) q[38],q[13]; +cu1(4.681337853654911e-08) q[39],q[13]; +cu1(2.3406689268274554e-08) q[40],q[13]; +cu1(1.1703344634137277e-08) q[41],q[13]; +cu1(5.8516723170686385e-09) q[42],q[13]; +cu1(2.9258361585343192e-09) q[43],q[13]; +cu1(1.4629180792671596e-09) q[44],q[13]; +cu1(7.314590396335798e-10) q[45],q[13]; +cu1(3.657295198167899e-10) q[46],q[13]; +cu1(1.8286475990839495e-10) q[47],q[13]; +cu1(9.143237995419748e-11) q[48],q[13]; +cu1(4.571618997709874e-11) q[49],q[13]; +cu1(2.285809498854937e-11) q[50],q[13]; +cu1(1.1429047494274685e-11) q[51],q[13]; +cu1(5.714523747137342e-12) q[52],q[13]; +cu1(2.857261873568671e-12) q[53],q[13]; +cu1(1.4286309367843356e-12) q[54],q[13]; +cu1(7.143154683921678e-13) q[55],q[13]; +cu1(3.571577341960839e-13) q[56],q[13]; +cu1(1.7857886709804195e-13) q[57],q[13]; +cu1(8.928943354902097e-14) q[58],q[13]; +cu1(4.4644716774510487e-14) q[59],q[13]; +cu1(2.2322358387255243e-14) q[60],q[13]; +cu1(1.1161179193627622e-14) q[61],q[13]; +h q[14]; +cu1(1.5707963267948966) q[15],q[14]; +cu1(0.7853981633974483) q[16],q[14]; +cu1(0.39269908169872414) q[17],q[14]; +cu1(0.19634954084936207) q[18],q[14]; +cu1(0.09817477042468103) q[19],q[14]; +cu1(0.04908738521234052) q[20],q[14]; +cu1(0.02454369260617026) q[21],q[14]; +cu1(0.01227184630308513) q[22],q[14]; +cu1(0.006135923151542565) q[23],q[14]; +cu1(0.0030679615757712823) q[24],q[14]; +cu1(0.0015339807878856412) q[25],q[14]; +cu1(0.0007669903939428206) q[26],q[14]; +cu1(0.0003834951969714103) q[27],q[14]; +cu1(0.00019174759848570515) q[28],q[14]; +cu1(9.587379924285257e-05) q[29],q[14]; +cu1(4.7936899621426287e-05) q[30],q[14]; +cu1(2.3968449810713143e-05) q[31],q[14]; +cu1(1.1984224905356572e-05) q[32],q[14]; +cu1(5.992112452678286e-06) q[33],q[14]; +cu1(2.996056226339143e-06) q[34],q[14]; +cu1(1.4980281131695715e-06) q[35],q[14]; +cu1(7.490140565847857e-07) q[36],q[14]; +cu1(3.7450702829239286e-07) q[37],q[14]; +cu1(1.8725351414619643e-07) q[38],q[14]; +cu1(9.362675707309822e-08) q[39],q[14]; +cu1(4.681337853654911e-08) q[40],q[14]; +cu1(2.3406689268274554e-08) q[41],q[14]; +cu1(1.1703344634137277e-08) q[42],q[14]; +cu1(5.8516723170686385e-09) q[43],q[14]; +cu1(2.9258361585343192e-09) q[44],q[14]; +cu1(1.4629180792671596e-09) q[45],q[14]; +cu1(7.314590396335798e-10) q[46],q[14]; +cu1(3.657295198167899e-10) q[47],q[14]; +cu1(1.8286475990839495e-10) q[48],q[14]; +cu1(9.143237995419748e-11) q[49],q[14]; +cu1(4.571618997709874e-11) q[50],q[14]; +cu1(2.285809498854937e-11) q[51],q[14]; +cu1(1.1429047494274685e-11) q[52],q[14]; +cu1(5.714523747137342e-12) q[53],q[14]; +cu1(2.857261873568671e-12) q[54],q[14]; +cu1(1.4286309367843356e-12) q[55],q[14]; +cu1(7.143154683921678e-13) q[56],q[14]; +cu1(3.571577341960839e-13) q[57],q[14]; +cu1(1.7857886709804195e-13) q[58],q[14]; +cu1(8.928943354902097e-14) q[59],q[14]; +cu1(4.4644716774510487e-14) q[60],q[14]; +cu1(2.2322358387255243e-14) q[61],q[14]; +h q[15]; +cu1(1.5707963267948966) q[16],q[15]; +cu1(0.7853981633974483) q[17],q[15]; +cu1(0.39269908169872414) q[18],q[15]; +cu1(0.19634954084936207) q[19],q[15]; +cu1(0.09817477042468103) q[20],q[15]; +cu1(0.04908738521234052) q[21],q[15]; +cu1(0.02454369260617026) q[22],q[15]; +cu1(0.01227184630308513) q[23],q[15]; +cu1(0.006135923151542565) q[24],q[15]; +cu1(0.0030679615757712823) q[25],q[15]; +cu1(0.0015339807878856412) q[26],q[15]; +cu1(0.0007669903939428206) q[27],q[15]; +cu1(0.0003834951969714103) q[28],q[15]; +cu1(0.00019174759848570515) q[29],q[15]; +cu1(9.587379924285257e-05) q[30],q[15]; +cu1(4.7936899621426287e-05) q[31],q[15]; +cu1(2.3968449810713143e-05) q[32],q[15]; +cu1(1.1984224905356572e-05) q[33],q[15]; +cu1(5.992112452678286e-06) q[34],q[15]; +cu1(2.996056226339143e-06) q[35],q[15]; +cu1(1.4980281131695715e-06) q[36],q[15]; +cu1(7.490140565847857e-07) q[37],q[15]; +cu1(3.7450702829239286e-07) q[38],q[15]; +cu1(1.8725351414619643e-07) q[39],q[15]; +cu1(9.362675707309822e-08) q[40],q[15]; +cu1(4.681337853654911e-08) q[41],q[15]; +cu1(2.3406689268274554e-08) q[42],q[15]; +cu1(1.1703344634137277e-08) q[43],q[15]; +cu1(5.8516723170686385e-09) q[44],q[15]; +cu1(2.9258361585343192e-09) q[45],q[15]; +cu1(1.4629180792671596e-09) q[46],q[15]; +cu1(7.314590396335798e-10) q[47],q[15]; +cu1(3.657295198167899e-10) q[48],q[15]; +cu1(1.8286475990839495e-10) q[49],q[15]; +cu1(9.143237995419748e-11) q[50],q[15]; +cu1(4.571618997709874e-11) q[51],q[15]; +cu1(2.285809498854937e-11) q[52],q[15]; +cu1(1.1429047494274685e-11) q[53],q[15]; +cu1(5.714523747137342e-12) q[54],q[15]; +cu1(2.857261873568671e-12) q[55],q[15]; +cu1(1.4286309367843356e-12) q[56],q[15]; +cu1(7.143154683921678e-13) q[57],q[15]; +cu1(3.571577341960839e-13) q[58],q[15]; +cu1(1.7857886709804195e-13) q[59],q[15]; +cu1(8.928943354902097e-14) q[60],q[15]; +cu1(4.4644716774510487e-14) q[61],q[15]; +h q[16]; +cu1(1.5707963267948966) q[17],q[16]; +cu1(0.7853981633974483) q[18],q[16]; +cu1(0.39269908169872414) q[19],q[16]; +cu1(0.19634954084936207) q[20],q[16]; +cu1(0.09817477042468103) q[21],q[16]; +cu1(0.04908738521234052) q[22],q[16]; +cu1(0.02454369260617026) q[23],q[16]; +cu1(0.01227184630308513) q[24],q[16]; +cu1(0.006135923151542565) q[25],q[16]; +cu1(0.0030679615757712823) q[26],q[16]; +cu1(0.0015339807878856412) q[27],q[16]; +cu1(0.0007669903939428206) q[28],q[16]; +cu1(0.0003834951969714103) q[29],q[16]; +cu1(0.00019174759848570515) q[30],q[16]; +cu1(9.587379924285257e-05) q[31],q[16]; +cu1(4.7936899621426287e-05) q[32],q[16]; +cu1(2.3968449810713143e-05) q[33],q[16]; +cu1(1.1984224905356572e-05) q[34],q[16]; +cu1(5.992112452678286e-06) q[35],q[16]; +cu1(2.996056226339143e-06) q[36],q[16]; +cu1(1.4980281131695715e-06) q[37],q[16]; +cu1(7.490140565847857e-07) q[38],q[16]; +cu1(3.7450702829239286e-07) q[39],q[16]; +cu1(1.8725351414619643e-07) q[40],q[16]; +cu1(9.362675707309822e-08) q[41],q[16]; +cu1(4.681337853654911e-08) q[42],q[16]; +cu1(2.3406689268274554e-08) q[43],q[16]; +cu1(1.1703344634137277e-08) q[44],q[16]; +cu1(5.8516723170686385e-09) q[45],q[16]; +cu1(2.9258361585343192e-09) q[46],q[16]; +cu1(1.4629180792671596e-09) q[47],q[16]; +cu1(7.314590396335798e-10) q[48],q[16]; +cu1(3.657295198167899e-10) q[49],q[16]; +cu1(1.8286475990839495e-10) q[50],q[16]; +cu1(9.143237995419748e-11) q[51],q[16]; +cu1(4.571618997709874e-11) q[52],q[16]; +cu1(2.285809498854937e-11) q[53],q[16]; +cu1(1.1429047494274685e-11) q[54],q[16]; +cu1(5.714523747137342e-12) q[55],q[16]; +cu1(2.857261873568671e-12) q[56],q[16]; +cu1(1.4286309367843356e-12) q[57],q[16]; +cu1(7.143154683921678e-13) q[58],q[16]; +cu1(3.571577341960839e-13) q[59],q[16]; +cu1(1.7857886709804195e-13) q[60],q[16]; +cu1(8.928943354902097e-14) q[61],q[16]; +h q[17]; +cu1(1.5707963267948966) q[18],q[17]; +cu1(0.7853981633974483) q[19],q[17]; +cu1(0.39269908169872414) q[20],q[17]; +cu1(0.19634954084936207) q[21],q[17]; +cu1(0.09817477042468103) q[22],q[17]; +cu1(0.04908738521234052) q[23],q[17]; +cu1(0.02454369260617026) q[24],q[17]; +cu1(0.01227184630308513) q[25],q[17]; +cu1(0.006135923151542565) q[26],q[17]; +cu1(0.0030679615757712823) q[27],q[17]; +cu1(0.0015339807878856412) q[28],q[17]; +cu1(0.0007669903939428206) q[29],q[17]; +cu1(0.0003834951969714103) q[30],q[17]; +cu1(0.00019174759848570515) q[31],q[17]; +cu1(9.587379924285257e-05) q[32],q[17]; +cu1(4.7936899621426287e-05) q[33],q[17]; +cu1(2.3968449810713143e-05) q[34],q[17]; +cu1(1.1984224905356572e-05) q[35],q[17]; +cu1(5.992112452678286e-06) q[36],q[17]; +cu1(2.996056226339143e-06) q[37],q[17]; +cu1(1.4980281131695715e-06) q[38],q[17]; +cu1(7.490140565847857e-07) q[39],q[17]; +cu1(3.7450702829239286e-07) q[40],q[17]; +cu1(1.8725351414619643e-07) q[41],q[17]; +cu1(9.362675707309822e-08) q[42],q[17]; +cu1(4.681337853654911e-08) q[43],q[17]; +cu1(2.3406689268274554e-08) q[44],q[17]; +cu1(1.1703344634137277e-08) q[45],q[17]; +cu1(5.8516723170686385e-09) q[46],q[17]; +cu1(2.9258361585343192e-09) q[47],q[17]; +cu1(1.4629180792671596e-09) q[48],q[17]; +cu1(7.314590396335798e-10) q[49],q[17]; +cu1(3.657295198167899e-10) q[50],q[17]; +cu1(1.8286475990839495e-10) q[51],q[17]; +cu1(9.143237995419748e-11) q[52],q[17]; +cu1(4.571618997709874e-11) q[53],q[17]; +cu1(2.285809498854937e-11) q[54],q[17]; +cu1(1.1429047494274685e-11) q[55],q[17]; +cu1(5.714523747137342e-12) q[56],q[17]; +cu1(2.857261873568671e-12) q[57],q[17]; +cu1(1.4286309367843356e-12) q[58],q[17]; +cu1(7.143154683921678e-13) q[59],q[17]; +cu1(3.571577341960839e-13) q[60],q[17]; +cu1(1.7857886709804195e-13) q[61],q[17]; +h q[18]; +cu1(1.5707963267948966) q[19],q[18]; +cu1(0.7853981633974483) q[20],q[18]; +cu1(0.39269908169872414) q[21],q[18]; +cu1(0.19634954084936207) q[22],q[18]; +cu1(0.09817477042468103) q[23],q[18]; +cu1(0.04908738521234052) q[24],q[18]; +cu1(0.02454369260617026) q[25],q[18]; +cu1(0.01227184630308513) q[26],q[18]; +cu1(0.006135923151542565) q[27],q[18]; +cu1(0.0030679615757712823) q[28],q[18]; +cu1(0.0015339807878856412) q[29],q[18]; +cu1(0.0007669903939428206) q[30],q[18]; +cu1(0.0003834951969714103) q[31],q[18]; +cu1(0.00019174759848570515) q[32],q[18]; +cu1(9.587379924285257e-05) q[33],q[18]; +cu1(4.7936899621426287e-05) q[34],q[18]; +cu1(2.3968449810713143e-05) q[35],q[18]; +cu1(1.1984224905356572e-05) q[36],q[18]; +cu1(5.992112452678286e-06) q[37],q[18]; +cu1(2.996056226339143e-06) q[38],q[18]; +cu1(1.4980281131695715e-06) q[39],q[18]; +cu1(7.490140565847857e-07) q[40],q[18]; +cu1(3.7450702829239286e-07) q[41],q[18]; +cu1(1.8725351414619643e-07) q[42],q[18]; +cu1(9.362675707309822e-08) q[43],q[18]; +cu1(4.681337853654911e-08) q[44],q[18]; +cu1(2.3406689268274554e-08) q[45],q[18]; +cu1(1.1703344634137277e-08) q[46],q[18]; +cu1(5.8516723170686385e-09) q[47],q[18]; +cu1(2.9258361585343192e-09) q[48],q[18]; +cu1(1.4629180792671596e-09) q[49],q[18]; +cu1(7.314590396335798e-10) q[50],q[18]; +cu1(3.657295198167899e-10) q[51],q[18]; +cu1(1.8286475990839495e-10) q[52],q[18]; +cu1(9.143237995419748e-11) q[53],q[18]; +cu1(4.571618997709874e-11) q[54],q[18]; +cu1(2.285809498854937e-11) q[55],q[18]; +cu1(1.1429047494274685e-11) q[56],q[18]; +cu1(5.714523747137342e-12) q[57],q[18]; +cu1(2.857261873568671e-12) q[58],q[18]; +cu1(1.4286309367843356e-12) q[59],q[18]; +cu1(7.143154683921678e-13) q[60],q[18]; +cu1(3.571577341960839e-13) q[61],q[18]; +h q[19]; +cu1(1.5707963267948966) q[20],q[19]; +cu1(0.7853981633974483) q[21],q[19]; +cu1(0.39269908169872414) q[22],q[19]; +cu1(0.19634954084936207) q[23],q[19]; +cu1(0.09817477042468103) q[24],q[19]; +cu1(0.04908738521234052) q[25],q[19]; +cu1(0.02454369260617026) q[26],q[19]; +cu1(0.01227184630308513) q[27],q[19]; +cu1(0.006135923151542565) q[28],q[19]; +cu1(0.0030679615757712823) q[29],q[19]; +cu1(0.0015339807878856412) q[30],q[19]; +cu1(0.0007669903939428206) q[31],q[19]; +cu1(0.0003834951969714103) q[32],q[19]; +cu1(0.00019174759848570515) q[33],q[19]; +cu1(9.587379924285257e-05) q[34],q[19]; +cu1(4.7936899621426287e-05) q[35],q[19]; +cu1(2.3968449810713143e-05) q[36],q[19]; +cu1(1.1984224905356572e-05) q[37],q[19]; +cu1(5.992112452678286e-06) q[38],q[19]; +cu1(2.996056226339143e-06) q[39],q[19]; +cu1(1.4980281131695715e-06) q[40],q[19]; +cu1(7.490140565847857e-07) q[41],q[19]; +cu1(3.7450702829239286e-07) q[42],q[19]; +cu1(1.8725351414619643e-07) q[43],q[19]; +cu1(9.362675707309822e-08) q[44],q[19]; +cu1(4.681337853654911e-08) q[45],q[19]; +cu1(2.3406689268274554e-08) q[46],q[19]; +cu1(1.1703344634137277e-08) q[47],q[19]; +cu1(5.8516723170686385e-09) q[48],q[19]; +cu1(2.9258361585343192e-09) q[49],q[19]; +cu1(1.4629180792671596e-09) q[50],q[19]; +cu1(7.314590396335798e-10) q[51],q[19]; +cu1(3.657295198167899e-10) q[52],q[19]; +cu1(1.8286475990839495e-10) q[53],q[19]; +cu1(9.143237995419748e-11) q[54],q[19]; +cu1(4.571618997709874e-11) q[55],q[19]; +cu1(2.285809498854937e-11) q[56],q[19]; +cu1(1.1429047494274685e-11) q[57],q[19]; +cu1(5.714523747137342e-12) q[58],q[19]; +cu1(2.857261873568671e-12) q[59],q[19]; +cu1(1.4286309367843356e-12) q[60],q[19]; +cu1(7.143154683921678e-13) q[61],q[19]; +h q[20]; +cu1(1.5707963267948966) q[21],q[20]; +cu1(0.7853981633974483) q[22],q[20]; +cu1(0.39269908169872414) q[23],q[20]; +cu1(0.19634954084936207) q[24],q[20]; +cu1(0.09817477042468103) q[25],q[20]; +cu1(0.04908738521234052) q[26],q[20]; +cu1(0.02454369260617026) q[27],q[20]; +cu1(0.01227184630308513) q[28],q[20]; +cu1(0.006135923151542565) q[29],q[20]; +cu1(0.0030679615757712823) q[30],q[20]; +cu1(0.0015339807878856412) q[31],q[20]; +cu1(0.0007669903939428206) q[32],q[20]; +cu1(0.0003834951969714103) q[33],q[20]; +cu1(0.00019174759848570515) q[34],q[20]; +cu1(9.587379924285257e-05) q[35],q[20]; +cu1(4.7936899621426287e-05) q[36],q[20]; +cu1(2.3968449810713143e-05) q[37],q[20]; +cu1(1.1984224905356572e-05) q[38],q[20]; +cu1(5.992112452678286e-06) q[39],q[20]; +cu1(2.996056226339143e-06) q[40],q[20]; +cu1(1.4980281131695715e-06) q[41],q[20]; +cu1(7.490140565847857e-07) q[42],q[20]; +cu1(3.7450702829239286e-07) q[43],q[20]; +cu1(1.8725351414619643e-07) q[44],q[20]; +cu1(9.362675707309822e-08) q[45],q[20]; +cu1(4.681337853654911e-08) q[46],q[20]; +cu1(2.3406689268274554e-08) q[47],q[20]; +cu1(1.1703344634137277e-08) q[48],q[20]; +cu1(5.8516723170686385e-09) q[49],q[20]; +cu1(2.9258361585343192e-09) q[50],q[20]; +cu1(1.4629180792671596e-09) q[51],q[20]; +cu1(7.314590396335798e-10) q[52],q[20]; +cu1(3.657295198167899e-10) q[53],q[20]; +cu1(1.8286475990839495e-10) q[54],q[20]; +cu1(9.143237995419748e-11) q[55],q[20]; +cu1(4.571618997709874e-11) q[56],q[20]; +cu1(2.285809498854937e-11) q[57],q[20]; +cu1(1.1429047494274685e-11) q[58],q[20]; +cu1(5.714523747137342e-12) q[59],q[20]; +cu1(2.857261873568671e-12) q[60],q[20]; +cu1(1.4286309367843356e-12) q[61],q[20]; +h q[21]; +cu1(1.5707963267948966) q[22],q[21]; +cu1(0.7853981633974483) q[23],q[21]; +cu1(0.39269908169872414) q[24],q[21]; +cu1(0.19634954084936207) q[25],q[21]; +cu1(0.09817477042468103) q[26],q[21]; +cu1(0.04908738521234052) q[27],q[21]; +cu1(0.02454369260617026) q[28],q[21]; +cu1(0.01227184630308513) q[29],q[21]; +cu1(0.006135923151542565) q[30],q[21]; +cu1(0.0030679615757712823) q[31],q[21]; +cu1(0.0015339807878856412) q[32],q[21]; +cu1(0.0007669903939428206) q[33],q[21]; +cu1(0.0003834951969714103) q[34],q[21]; +cu1(0.00019174759848570515) q[35],q[21]; +cu1(9.587379924285257e-05) q[36],q[21]; +cu1(4.7936899621426287e-05) q[37],q[21]; +cu1(2.3968449810713143e-05) q[38],q[21]; +cu1(1.1984224905356572e-05) q[39],q[21]; +cu1(5.992112452678286e-06) q[40],q[21]; +cu1(2.996056226339143e-06) q[41],q[21]; +cu1(1.4980281131695715e-06) q[42],q[21]; +cu1(7.490140565847857e-07) q[43],q[21]; +cu1(3.7450702829239286e-07) q[44],q[21]; +cu1(1.8725351414619643e-07) q[45],q[21]; +cu1(9.362675707309822e-08) q[46],q[21]; +cu1(4.681337853654911e-08) q[47],q[21]; +cu1(2.3406689268274554e-08) q[48],q[21]; +cu1(1.1703344634137277e-08) q[49],q[21]; +cu1(5.8516723170686385e-09) q[50],q[21]; +cu1(2.9258361585343192e-09) q[51],q[21]; +cu1(1.4629180792671596e-09) q[52],q[21]; +cu1(7.314590396335798e-10) q[53],q[21]; +cu1(3.657295198167899e-10) q[54],q[21]; +cu1(1.8286475990839495e-10) q[55],q[21]; +cu1(9.143237995419748e-11) q[56],q[21]; +cu1(4.571618997709874e-11) q[57],q[21]; +cu1(2.285809498854937e-11) q[58],q[21]; +cu1(1.1429047494274685e-11) q[59],q[21]; +cu1(5.714523747137342e-12) q[60],q[21]; +cu1(2.857261873568671e-12) q[61],q[21]; +h q[22]; +cu1(1.5707963267948966) q[23],q[22]; +cu1(0.7853981633974483) q[24],q[22]; +cu1(0.39269908169872414) q[25],q[22]; +cu1(0.19634954084936207) q[26],q[22]; +cu1(0.09817477042468103) q[27],q[22]; +cu1(0.04908738521234052) q[28],q[22]; +cu1(0.02454369260617026) q[29],q[22]; +cu1(0.01227184630308513) q[30],q[22]; +cu1(0.006135923151542565) q[31],q[22]; +cu1(0.0030679615757712823) q[32],q[22]; +cu1(0.0015339807878856412) q[33],q[22]; +cu1(0.0007669903939428206) q[34],q[22]; +cu1(0.0003834951969714103) q[35],q[22]; +cu1(0.00019174759848570515) q[36],q[22]; +cu1(9.587379924285257e-05) q[37],q[22]; +cu1(4.7936899621426287e-05) q[38],q[22]; +cu1(2.3968449810713143e-05) q[39],q[22]; +cu1(1.1984224905356572e-05) q[40],q[22]; +cu1(5.992112452678286e-06) q[41],q[22]; +cu1(2.996056226339143e-06) q[42],q[22]; +cu1(1.4980281131695715e-06) q[43],q[22]; +cu1(7.490140565847857e-07) q[44],q[22]; +cu1(3.7450702829239286e-07) q[45],q[22]; +cu1(1.8725351414619643e-07) q[46],q[22]; +cu1(9.362675707309822e-08) q[47],q[22]; +cu1(4.681337853654911e-08) q[48],q[22]; +cu1(2.3406689268274554e-08) q[49],q[22]; +cu1(1.1703344634137277e-08) q[50],q[22]; +cu1(5.8516723170686385e-09) q[51],q[22]; +cu1(2.9258361585343192e-09) q[52],q[22]; +cu1(1.4629180792671596e-09) q[53],q[22]; +cu1(7.314590396335798e-10) q[54],q[22]; +cu1(3.657295198167899e-10) q[55],q[22]; +cu1(1.8286475990839495e-10) q[56],q[22]; +cu1(9.143237995419748e-11) q[57],q[22]; +cu1(4.571618997709874e-11) q[58],q[22]; +cu1(2.285809498854937e-11) q[59],q[22]; +cu1(1.1429047494274685e-11) q[60],q[22]; +cu1(5.714523747137342e-12) q[61],q[22]; +h q[23]; +cu1(1.5707963267948966) q[24],q[23]; +cu1(0.7853981633974483) q[25],q[23]; +cu1(0.39269908169872414) q[26],q[23]; +cu1(0.19634954084936207) q[27],q[23]; +cu1(0.09817477042468103) q[28],q[23]; +cu1(0.04908738521234052) q[29],q[23]; +cu1(0.02454369260617026) q[30],q[23]; +cu1(0.01227184630308513) q[31],q[23]; +cu1(0.006135923151542565) q[32],q[23]; +cu1(0.0030679615757712823) q[33],q[23]; +cu1(0.0015339807878856412) q[34],q[23]; +cu1(0.0007669903939428206) q[35],q[23]; +cu1(0.0003834951969714103) q[36],q[23]; +cu1(0.00019174759848570515) q[37],q[23]; +cu1(9.587379924285257e-05) q[38],q[23]; +cu1(4.7936899621426287e-05) q[39],q[23]; +cu1(2.3968449810713143e-05) q[40],q[23]; +cu1(1.1984224905356572e-05) q[41],q[23]; +cu1(5.992112452678286e-06) q[42],q[23]; +cu1(2.996056226339143e-06) q[43],q[23]; +cu1(1.4980281131695715e-06) q[44],q[23]; +cu1(7.490140565847857e-07) q[45],q[23]; +cu1(3.7450702829239286e-07) q[46],q[23]; +cu1(1.8725351414619643e-07) q[47],q[23]; +cu1(9.362675707309822e-08) q[48],q[23]; +cu1(4.681337853654911e-08) q[49],q[23]; +cu1(2.3406689268274554e-08) q[50],q[23]; +cu1(1.1703344634137277e-08) q[51],q[23]; +cu1(5.8516723170686385e-09) q[52],q[23]; +cu1(2.9258361585343192e-09) q[53],q[23]; +cu1(1.4629180792671596e-09) q[54],q[23]; +cu1(7.314590396335798e-10) q[55],q[23]; +cu1(3.657295198167899e-10) q[56],q[23]; +cu1(1.8286475990839495e-10) q[57],q[23]; +cu1(9.143237995419748e-11) q[58],q[23]; +cu1(4.571618997709874e-11) q[59],q[23]; +cu1(2.285809498854937e-11) q[60],q[23]; +cu1(1.1429047494274685e-11) q[61],q[23]; +h q[24]; +cu1(1.5707963267948966) q[25],q[24]; +cu1(0.7853981633974483) q[26],q[24]; +cu1(0.39269908169872414) q[27],q[24]; +cu1(0.19634954084936207) q[28],q[24]; +cu1(0.09817477042468103) q[29],q[24]; +cu1(0.04908738521234052) q[30],q[24]; +cu1(0.02454369260617026) q[31],q[24]; +cu1(0.01227184630308513) q[32],q[24]; +cu1(0.006135923151542565) q[33],q[24]; +cu1(0.0030679615757712823) q[34],q[24]; +cu1(0.0015339807878856412) q[35],q[24]; +cu1(0.0007669903939428206) q[36],q[24]; +cu1(0.0003834951969714103) q[37],q[24]; +cu1(0.00019174759848570515) q[38],q[24]; +cu1(9.587379924285257e-05) q[39],q[24]; +cu1(4.7936899621426287e-05) q[40],q[24]; +cu1(2.3968449810713143e-05) q[41],q[24]; +cu1(1.1984224905356572e-05) q[42],q[24]; +cu1(5.992112452678286e-06) q[43],q[24]; +cu1(2.996056226339143e-06) q[44],q[24]; +cu1(1.4980281131695715e-06) q[45],q[24]; +cu1(7.490140565847857e-07) q[46],q[24]; +cu1(3.7450702829239286e-07) q[47],q[24]; +cu1(1.8725351414619643e-07) q[48],q[24]; +cu1(9.362675707309822e-08) q[49],q[24]; +cu1(4.681337853654911e-08) q[50],q[24]; +cu1(2.3406689268274554e-08) q[51],q[24]; +cu1(1.1703344634137277e-08) q[52],q[24]; +cu1(5.8516723170686385e-09) q[53],q[24]; +cu1(2.9258361585343192e-09) q[54],q[24]; +cu1(1.4629180792671596e-09) q[55],q[24]; +cu1(7.314590396335798e-10) q[56],q[24]; +cu1(3.657295198167899e-10) q[57],q[24]; +cu1(1.8286475990839495e-10) q[58],q[24]; +cu1(9.143237995419748e-11) q[59],q[24]; +cu1(4.571618997709874e-11) q[60],q[24]; +cu1(2.285809498854937e-11) q[61],q[24]; +h q[25]; +cu1(1.5707963267948966) q[26],q[25]; +cu1(0.7853981633974483) q[27],q[25]; +cu1(0.39269908169872414) q[28],q[25]; +cu1(0.19634954084936207) q[29],q[25]; +cu1(0.09817477042468103) q[30],q[25]; +cu1(0.04908738521234052) q[31],q[25]; +cu1(0.02454369260617026) q[32],q[25]; +cu1(0.01227184630308513) q[33],q[25]; +cu1(0.006135923151542565) q[34],q[25]; +cu1(0.0030679615757712823) q[35],q[25]; +cu1(0.0015339807878856412) q[36],q[25]; +cu1(0.0007669903939428206) q[37],q[25]; +cu1(0.0003834951969714103) q[38],q[25]; +cu1(0.00019174759848570515) q[39],q[25]; +cu1(9.587379924285257e-05) q[40],q[25]; +cu1(4.7936899621426287e-05) q[41],q[25]; +cu1(2.3968449810713143e-05) q[42],q[25]; +cu1(1.1984224905356572e-05) q[43],q[25]; +cu1(5.992112452678286e-06) q[44],q[25]; +cu1(2.996056226339143e-06) q[45],q[25]; +cu1(1.4980281131695715e-06) q[46],q[25]; +cu1(7.490140565847857e-07) q[47],q[25]; +cu1(3.7450702829239286e-07) q[48],q[25]; +cu1(1.8725351414619643e-07) q[49],q[25]; +cu1(9.362675707309822e-08) q[50],q[25]; +cu1(4.681337853654911e-08) q[51],q[25]; +cu1(2.3406689268274554e-08) q[52],q[25]; +cu1(1.1703344634137277e-08) q[53],q[25]; +cu1(5.8516723170686385e-09) q[54],q[25]; +cu1(2.9258361585343192e-09) q[55],q[25]; +cu1(1.4629180792671596e-09) q[56],q[25]; +cu1(7.314590396335798e-10) q[57],q[25]; +cu1(3.657295198167899e-10) q[58],q[25]; +cu1(1.8286475990839495e-10) q[59],q[25]; +cu1(9.143237995419748e-11) q[60],q[25]; +cu1(4.571618997709874e-11) q[61],q[25]; +h q[26]; +cu1(1.5707963267948966) q[27],q[26]; +cu1(0.7853981633974483) q[28],q[26]; +cu1(0.39269908169872414) q[29],q[26]; +cu1(0.19634954084936207) q[30],q[26]; +cu1(0.09817477042468103) q[31],q[26]; +cu1(0.04908738521234052) q[32],q[26]; +cu1(0.02454369260617026) q[33],q[26]; +cu1(0.01227184630308513) q[34],q[26]; +cu1(0.006135923151542565) q[35],q[26]; +cu1(0.0030679615757712823) q[36],q[26]; +cu1(0.0015339807878856412) q[37],q[26]; +cu1(0.0007669903939428206) q[38],q[26]; +cu1(0.0003834951969714103) q[39],q[26]; +cu1(0.00019174759848570515) q[40],q[26]; +cu1(9.587379924285257e-05) q[41],q[26]; +cu1(4.7936899621426287e-05) q[42],q[26]; +cu1(2.3968449810713143e-05) q[43],q[26]; +cu1(1.1984224905356572e-05) q[44],q[26]; +cu1(5.992112452678286e-06) q[45],q[26]; +cu1(2.996056226339143e-06) q[46],q[26]; +cu1(1.4980281131695715e-06) q[47],q[26]; +cu1(7.490140565847857e-07) q[48],q[26]; +cu1(3.7450702829239286e-07) q[49],q[26]; +cu1(1.8725351414619643e-07) q[50],q[26]; +cu1(9.362675707309822e-08) q[51],q[26]; +cu1(4.681337853654911e-08) q[52],q[26]; +cu1(2.3406689268274554e-08) q[53],q[26]; +cu1(1.1703344634137277e-08) q[54],q[26]; +cu1(5.8516723170686385e-09) q[55],q[26]; +cu1(2.9258361585343192e-09) q[56],q[26]; +cu1(1.4629180792671596e-09) q[57],q[26]; +cu1(7.314590396335798e-10) q[58],q[26]; +cu1(3.657295198167899e-10) q[59],q[26]; +cu1(1.8286475990839495e-10) q[60],q[26]; +cu1(9.143237995419748e-11) q[61],q[26]; +h q[27]; +cu1(1.5707963267948966) q[28],q[27]; +cu1(0.7853981633974483) q[29],q[27]; +cu1(0.39269908169872414) q[30],q[27]; +cu1(0.19634954084936207) q[31],q[27]; +cu1(0.09817477042468103) q[32],q[27]; +cu1(0.04908738521234052) q[33],q[27]; +cu1(0.02454369260617026) q[34],q[27]; +cu1(0.01227184630308513) q[35],q[27]; +cu1(0.006135923151542565) q[36],q[27]; +cu1(0.0030679615757712823) q[37],q[27]; +cu1(0.0015339807878856412) q[38],q[27]; +cu1(0.0007669903939428206) q[39],q[27]; +cu1(0.0003834951969714103) q[40],q[27]; +cu1(0.00019174759848570515) q[41],q[27]; +cu1(9.587379924285257e-05) q[42],q[27]; +cu1(4.7936899621426287e-05) q[43],q[27]; +cu1(2.3968449810713143e-05) q[44],q[27]; +cu1(1.1984224905356572e-05) q[45],q[27]; +cu1(5.992112452678286e-06) q[46],q[27]; +cu1(2.996056226339143e-06) q[47],q[27]; +cu1(1.4980281131695715e-06) q[48],q[27]; +cu1(7.490140565847857e-07) q[49],q[27]; +cu1(3.7450702829239286e-07) q[50],q[27]; +cu1(1.8725351414619643e-07) q[51],q[27]; +cu1(9.362675707309822e-08) q[52],q[27]; +cu1(4.681337853654911e-08) q[53],q[27]; +cu1(2.3406689268274554e-08) q[54],q[27]; +cu1(1.1703344634137277e-08) q[55],q[27]; +cu1(5.8516723170686385e-09) q[56],q[27]; +cu1(2.9258361585343192e-09) q[57],q[27]; +cu1(1.4629180792671596e-09) q[58],q[27]; +cu1(7.314590396335798e-10) q[59],q[27]; +cu1(3.657295198167899e-10) q[60],q[27]; +cu1(1.8286475990839495e-10) q[61],q[27]; +h q[28]; +cu1(1.5707963267948966) q[29],q[28]; +cu1(0.7853981633974483) q[30],q[28]; +cu1(0.39269908169872414) q[31],q[28]; +cu1(0.19634954084936207) q[32],q[28]; +cu1(0.09817477042468103) q[33],q[28]; +cu1(0.04908738521234052) q[34],q[28]; +cu1(0.02454369260617026) q[35],q[28]; +cu1(0.01227184630308513) q[36],q[28]; +cu1(0.006135923151542565) q[37],q[28]; +cu1(0.0030679615757712823) q[38],q[28]; +cu1(0.0015339807878856412) q[39],q[28]; +cu1(0.0007669903939428206) q[40],q[28]; +cu1(0.0003834951969714103) q[41],q[28]; +cu1(0.00019174759848570515) q[42],q[28]; +cu1(9.587379924285257e-05) q[43],q[28]; +cu1(4.7936899621426287e-05) q[44],q[28]; +cu1(2.3968449810713143e-05) q[45],q[28]; +cu1(1.1984224905356572e-05) q[46],q[28]; +cu1(5.992112452678286e-06) q[47],q[28]; +cu1(2.996056226339143e-06) q[48],q[28]; +cu1(1.4980281131695715e-06) q[49],q[28]; +cu1(7.490140565847857e-07) q[50],q[28]; +cu1(3.7450702829239286e-07) q[51],q[28]; +cu1(1.8725351414619643e-07) q[52],q[28]; +cu1(9.362675707309822e-08) q[53],q[28]; +cu1(4.681337853654911e-08) q[54],q[28]; +cu1(2.3406689268274554e-08) q[55],q[28]; +cu1(1.1703344634137277e-08) q[56],q[28]; +cu1(5.8516723170686385e-09) q[57],q[28]; +cu1(2.9258361585343192e-09) q[58],q[28]; +cu1(1.4629180792671596e-09) q[59],q[28]; +cu1(7.314590396335798e-10) q[60],q[28]; +cu1(3.657295198167899e-10) q[61],q[28]; +h q[29]; +cu1(1.5707963267948966) q[30],q[29]; +cu1(0.7853981633974483) q[31],q[29]; +cu1(0.39269908169872414) q[32],q[29]; +cu1(0.19634954084936207) q[33],q[29]; +cu1(0.09817477042468103) q[34],q[29]; +cu1(0.04908738521234052) q[35],q[29]; +cu1(0.02454369260617026) q[36],q[29]; +cu1(0.01227184630308513) q[37],q[29]; +cu1(0.006135923151542565) q[38],q[29]; +cu1(0.0030679615757712823) q[39],q[29]; +cu1(0.0015339807878856412) q[40],q[29]; +cu1(0.0007669903939428206) q[41],q[29]; +cu1(0.0003834951969714103) q[42],q[29]; +cu1(0.00019174759848570515) q[43],q[29]; +cu1(9.587379924285257e-05) q[44],q[29]; +cu1(4.7936899621426287e-05) q[45],q[29]; +cu1(2.3968449810713143e-05) q[46],q[29]; +cu1(1.1984224905356572e-05) q[47],q[29]; +cu1(5.992112452678286e-06) q[48],q[29]; +cu1(2.996056226339143e-06) q[49],q[29]; +cu1(1.4980281131695715e-06) q[50],q[29]; +cu1(7.490140565847857e-07) q[51],q[29]; +cu1(3.7450702829239286e-07) q[52],q[29]; +cu1(1.8725351414619643e-07) q[53],q[29]; +cu1(9.362675707309822e-08) q[54],q[29]; +cu1(4.681337853654911e-08) q[55],q[29]; +cu1(2.3406689268274554e-08) q[56],q[29]; +cu1(1.1703344634137277e-08) q[57],q[29]; +cu1(5.8516723170686385e-09) q[58],q[29]; +cu1(2.9258361585343192e-09) q[59],q[29]; +cu1(1.4629180792671596e-09) q[60],q[29]; +cu1(7.314590396335798e-10) q[61],q[29]; +h q[30]; +cu1(1.5707963267948966) q[31],q[30]; +cu1(0.7853981633974483) q[32],q[30]; +cu1(0.39269908169872414) q[33],q[30]; +cu1(0.19634954084936207) q[34],q[30]; +cu1(0.09817477042468103) q[35],q[30]; +cu1(0.04908738521234052) q[36],q[30]; +cu1(0.02454369260617026) q[37],q[30]; +cu1(0.01227184630308513) q[38],q[30]; +cu1(0.006135923151542565) q[39],q[30]; +cu1(0.0030679615757712823) q[40],q[30]; +cu1(0.0015339807878856412) q[41],q[30]; +cu1(0.0007669903939428206) q[42],q[30]; +cu1(0.0003834951969714103) q[43],q[30]; +cu1(0.00019174759848570515) q[44],q[30]; +cu1(9.587379924285257e-05) q[45],q[30]; +cu1(4.7936899621426287e-05) q[46],q[30]; +cu1(2.3968449810713143e-05) q[47],q[30]; +cu1(1.1984224905356572e-05) q[48],q[30]; +cu1(5.992112452678286e-06) q[49],q[30]; +cu1(2.996056226339143e-06) q[50],q[30]; +cu1(1.4980281131695715e-06) q[51],q[30]; +cu1(7.490140565847857e-07) q[52],q[30]; +cu1(3.7450702829239286e-07) q[53],q[30]; +cu1(1.8725351414619643e-07) q[54],q[30]; +cu1(9.362675707309822e-08) q[55],q[30]; +cu1(4.681337853654911e-08) q[56],q[30]; +cu1(2.3406689268274554e-08) q[57],q[30]; +cu1(1.1703344634137277e-08) q[58],q[30]; +cu1(5.8516723170686385e-09) q[59],q[30]; +cu1(2.9258361585343192e-09) q[60],q[30]; +cu1(1.4629180792671596e-09) q[61],q[30]; +h q[31]; +cu1(1.5707963267948966) q[32],q[31]; +cu1(0.7853981633974483) q[33],q[31]; +cu1(0.39269908169872414) q[34],q[31]; +cu1(0.19634954084936207) q[35],q[31]; +cu1(0.09817477042468103) q[36],q[31]; +cu1(0.04908738521234052) q[37],q[31]; +cu1(0.02454369260617026) q[38],q[31]; +cu1(0.01227184630308513) q[39],q[31]; +cu1(0.006135923151542565) q[40],q[31]; +cu1(0.0030679615757712823) q[41],q[31]; +cu1(0.0015339807878856412) q[42],q[31]; +cu1(0.0007669903939428206) q[43],q[31]; +cu1(0.0003834951969714103) q[44],q[31]; +cu1(0.00019174759848570515) q[45],q[31]; +cu1(9.587379924285257e-05) q[46],q[31]; +cu1(4.7936899621426287e-05) q[47],q[31]; +cu1(2.3968449810713143e-05) q[48],q[31]; +cu1(1.1984224905356572e-05) q[49],q[31]; +cu1(5.992112452678286e-06) q[50],q[31]; +cu1(2.996056226339143e-06) q[51],q[31]; +cu1(1.4980281131695715e-06) q[52],q[31]; +cu1(7.490140565847857e-07) q[53],q[31]; +cu1(3.7450702829239286e-07) q[54],q[31]; +cu1(1.8725351414619643e-07) q[55],q[31]; +cu1(9.362675707309822e-08) q[56],q[31]; +cu1(4.681337853654911e-08) q[57],q[31]; +cu1(2.3406689268274554e-08) q[58],q[31]; +cu1(1.1703344634137277e-08) q[59],q[31]; +cu1(5.8516723170686385e-09) q[60],q[31]; +cu1(2.9258361585343192e-09) q[61],q[31]; +h q[32]; +cu1(1.5707963267948966) q[33],q[32]; +cu1(0.7853981633974483) q[34],q[32]; +cu1(0.39269908169872414) q[35],q[32]; +cu1(0.19634954084936207) q[36],q[32]; +cu1(0.09817477042468103) q[37],q[32]; +cu1(0.04908738521234052) q[38],q[32]; +cu1(0.02454369260617026) q[39],q[32]; +cu1(0.01227184630308513) q[40],q[32]; +cu1(0.006135923151542565) q[41],q[32]; +cu1(0.0030679615757712823) q[42],q[32]; +cu1(0.0015339807878856412) q[43],q[32]; +cu1(0.0007669903939428206) q[44],q[32]; +cu1(0.0003834951969714103) q[45],q[32]; +cu1(0.00019174759848570515) q[46],q[32]; +cu1(9.587379924285257e-05) q[47],q[32]; +cu1(4.7936899621426287e-05) q[48],q[32]; +cu1(2.3968449810713143e-05) q[49],q[32]; +cu1(1.1984224905356572e-05) q[50],q[32]; +cu1(5.992112452678286e-06) q[51],q[32]; +cu1(2.996056226339143e-06) q[52],q[32]; +cu1(1.4980281131695715e-06) q[53],q[32]; +cu1(7.490140565847857e-07) q[54],q[32]; +cu1(3.7450702829239286e-07) q[55],q[32]; +cu1(1.8725351414619643e-07) q[56],q[32]; +cu1(9.362675707309822e-08) q[57],q[32]; +cu1(4.681337853654911e-08) q[58],q[32]; +cu1(2.3406689268274554e-08) q[59],q[32]; +cu1(1.1703344634137277e-08) q[60],q[32]; +cu1(5.8516723170686385e-09) q[61],q[32]; +h q[33]; +cu1(1.5707963267948966) q[34],q[33]; +cu1(0.7853981633974483) q[35],q[33]; +cu1(0.39269908169872414) q[36],q[33]; +cu1(0.19634954084936207) q[37],q[33]; +cu1(0.09817477042468103) q[38],q[33]; +cu1(0.04908738521234052) q[39],q[33]; +cu1(0.02454369260617026) q[40],q[33]; +cu1(0.01227184630308513) q[41],q[33]; +cu1(0.006135923151542565) q[42],q[33]; +cu1(0.0030679615757712823) q[43],q[33]; +cu1(0.0015339807878856412) q[44],q[33]; +cu1(0.0007669903939428206) q[45],q[33]; +cu1(0.0003834951969714103) q[46],q[33]; +cu1(0.00019174759848570515) q[47],q[33]; +cu1(9.587379924285257e-05) q[48],q[33]; +cu1(4.7936899621426287e-05) q[49],q[33]; +cu1(2.3968449810713143e-05) q[50],q[33]; +cu1(1.1984224905356572e-05) q[51],q[33]; +cu1(5.992112452678286e-06) q[52],q[33]; +cu1(2.996056226339143e-06) q[53],q[33]; +cu1(1.4980281131695715e-06) q[54],q[33]; +cu1(7.490140565847857e-07) q[55],q[33]; +cu1(3.7450702829239286e-07) q[56],q[33]; +cu1(1.8725351414619643e-07) q[57],q[33]; +cu1(9.362675707309822e-08) q[58],q[33]; +cu1(4.681337853654911e-08) q[59],q[33]; +cu1(2.3406689268274554e-08) q[60],q[33]; +cu1(1.1703344634137277e-08) q[61],q[33]; +h q[34]; +cu1(1.5707963267948966) q[35],q[34]; +cu1(0.7853981633974483) q[36],q[34]; +cu1(0.39269908169872414) q[37],q[34]; +cu1(0.19634954084936207) q[38],q[34]; +cu1(0.09817477042468103) q[39],q[34]; +cu1(0.04908738521234052) q[40],q[34]; +cu1(0.02454369260617026) q[41],q[34]; +cu1(0.01227184630308513) q[42],q[34]; +cu1(0.006135923151542565) q[43],q[34]; +cu1(0.0030679615757712823) q[44],q[34]; +cu1(0.0015339807878856412) q[45],q[34]; +cu1(0.0007669903939428206) q[46],q[34]; +cu1(0.0003834951969714103) q[47],q[34]; +cu1(0.00019174759848570515) q[48],q[34]; +cu1(9.587379924285257e-05) q[49],q[34]; +cu1(4.7936899621426287e-05) q[50],q[34]; +cu1(2.3968449810713143e-05) q[51],q[34]; +cu1(1.1984224905356572e-05) q[52],q[34]; +cu1(5.992112452678286e-06) q[53],q[34]; +cu1(2.996056226339143e-06) q[54],q[34]; +cu1(1.4980281131695715e-06) q[55],q[34]; +cu1(7.490140565847857e-07) q[56],q[34]; +cu1(3.7450702829239286e-07) q[57],q[34]; +cu1(1.8725351414619643e-07) q[58],q[34]; +cu1(9.362675707309822e-08) q[59],q[34]; +cu1(4.681337853654911e-08) q[60],q[34]; +cu1(2.3406689268274554e-08) q[61],q[34]; +h q[35]; +cu1(1.5707963267948966) q[36],q[35]; +cu1(0.7853981633974483) q[37],q[35]; +cu1(0.39269908169872414) q[38],q[35]; +cu1(0.19634954084936207) q[39],q[35]; +cu1(0.09817477042468103) q[40],q[35]; +cu1(0.04908738521234052) q[41],q[35]; +cu1(0.02454369260617026) q[42],q[35]; +cu1(0.01227184630308513) q[43],q[35]; +cu1(0.006135923151542565) q[44],q[35]; +cu1(0.0030679615757712823) q[45],q[35]; +cu1(0.0015339807878856412) q[46],q[35]; +cu1(0.0007669903939428206) q[47],q[35]; +cu1(0.0003834951969714103) q[48],q[35]; +cu1(0.00019174759848570515) q[49],q[35]; +cu1(9.587379924285257e-05) q[50],q[35]; +cu1(4.7936899621426287e-05) q[51],q[35]; +cu1(2.3968449810713143e-05) q[52],q[35]; +cu1(1.1984224905356572e-05) q[53],q[35]; +cu1(5.992112452678286e-06) q[54],q[35]; +cu1(2.996056226339143e-06) q[55],q[35]; +cu1(1.4980281131695715e-06) q[56],q[35]; +cu1(7.490140565847857e-07) q[57],q[35]; +cu1(3.7450702829239286e-07) q[58],q[35]; +cu1(1.8725351414619643e-07) q[59],q[35]; +cu1(9.362675707309822e-08) q[60],q[35]; +cu1(4.681337853654911e-08) q[61],q[35]; +h q[36]; +cu1(1.5707963267948966) q[37],q[36]; +cu1(0.7853981633974483) q[38],q[36]; +cu1(0.39269908169872414) q[39],q[36]; +cu1(0.19634954084936207) q[40],q[36]; +cu1(0.09817477042468103) q[41],q[36]; +cu1(0.04908738521234052) q[42],q[36]; +cu1(0.02454369260617026) q[43],q[36]; +cu1(0.01227184630308513) q[44],q[36]; +cu1(0.006135923151542565) q[45],q[36]; +cu1(0.0030679615757712823) q[46],q[36]; +cu1(0.0015339807878856412) q[47],q[36]; +cu1(0.0007669903939428206) q[48],q[36]; +cu1(0.0003834951969714103) q[49],q[36]; +cu1(0.00019174759848570515) q[50],q[36]; +cu1(9.587379924285257e-05) q[51],q[36]; +cu1(4.7936899621426287e-05) q[52],q[36]; +cu1(2.3968449810713143e-05) q[53],q[36]; +cu1(1.1984224905356572e-05) q[54],q[36]; +cu1(5.992112452678286e-06) q[55],q[36]; +cu1(2.996056226339143e-06) q[56],q[36]; +cu1(1.4980281131695715e-06) q[57],q[36]; +cu1(7.490140565847857e-07) q[58],q[36]; +cu1(3.7450702829239286e-07) q[59],q[36]; +cu1(1.8725351414619643e-07) q[60],q[36]; +cu1(9.362675707309822e-08) q[61],q[36]; +h q[37]; +cu1(1.5707963267948966) q[38],q[37]; +cu1(0.7853981633974483) q[39],q[37]; +cu1(0.39269908169872414) q[40],q[37]; +cu1(0.19634954084936207) q[41],q[37]; +cu1(0.09817477042468103) q[42],q[37]; +cu1(0.04908738521234052) q[43],q[37]; +cu1(0.02454369260617026) q[44],q[37]; +cu1(0.01227184630308513) q[45],q[37]; +cu1(0.006135923151542565) q[46],q[37]; +cu1(0.0030679615757712823) q[47],q[37]; +cu1(0.0015339807878856412) q[48],q[37]; +cu1(0.0007669903939428206) q[49],q[37]; +cu1(0.0003834951969714103) q[50],q[37]; +cu1(0.00019174759848570515) q[51],q[37]; +cu1(9.587379924285257e-05) q[52],q[37]; +cu1(4.7936899621426287e-05) q[53],q[37]; +cu1(2.3968449810713143e-05) q[54],q[37]; +cu1(1.1984224905356572e-05) q[55],q[37]; +cu1(5.992112452678286e-06) q[56],q[37]; +cu1(2.996056226339143e-06) q[57],q[37]; +cu1(1.4980281131695715e-06) q[58],q[37]; +cu1(7.490140565847857e-07) q[59],q[37]; +cu1(3.7450702829239286e-07) q[60],q[37]; +cu1(1.8725351414619643e-07) q[61],q[37]; +h q[38]; +cu1(1.5707963267948966) q[39],q[38]; +cu1(0.7853981633974483) q[40],q[38]; +cu1(0.39269908169872414) q[41],q[38]; +cu1(0.19634954084936207) q[42],q[38]; +cu1(0.09817477042468103) q[43],q[38]; +cu1(0.04908738521234052) q[44],q[38]; +cu1(0.02454369260617026) q[45],q[38]; +cu1(0.01227184630308513) q[46],q[38]; +cu1(0.006135923151542565) q[47],q[38]; +cu1(0.0030679615757712823) q[48],q[38]; +cu1(0.0015339807878856412) q[49],q[38]; +cu1(0.0007669903939428206) q[50],q[38]; +cu1(0.0003834951969714103) q[51],q[38]; +cu1(0.00019174759848570515) q[52],q[38]; +cu1(9.587379924285257e-05) q[53],q[38]; +cu1(4.7936899621426287e-05) q[54],q[38]; +cu1(2.3968449810713143e-05) q[55],q[38]; +cu1(1.1984224905356572e-05) q[56],q[38]; +cu1(5.992112452678286e-06) q[57],q[38]; +cu1(2.996056226339143e-06) q[58],q[38]; +cu1(1.4980281131695715e-06) q[59],q[38]; +cu1(7.490140565847857e-07) q[60],q[38]; +cu1(3.7450702829239286e-07) q[61],q[38]; +h q[39]; +cu1(1.5707963267948966) q[40],q[39]; +cu1(0.7853981633974483) q[41],q[39]; +cu1(0.39269908169872414) q[42],q[39]; +cu1(0.19634954084936207) q[43],q[39]; +cu1(0.09817477042468103) q[44],q[39]; +cu1(0.04908738521234052) q[45],q[39]; +cu1(0.02454369260617026) q[46],q[39]; +cu1(0.01227184630308513) q[47],q[39]; +cu1(0.006135923151542565) q[48],q[39]; +cu1(0.0030679615757712823) q[49],q[39]; +cu1(0.0015339807878856412) q[50],q[39]; +cu1(0.0007669903939428206) q[51],q[39]; +cu1(0.0003834951969714103) q[52],q[39]; +cu1(0.00019174759848570515) q[53],q[39]; +cu1(9.587379924285257e-05) q[54],q[39]; +cu1(4.7936899621426287e-05) q[55],q[39]; +cu1(2.3968449810713143e-05) q[56],q[39]; +cu1(1.1984224905356572e-05) q[57],q[39]; +cu1(5.992112452678286e-06) q[58],q[39]; +cu1(2.996056226339143e-06) q[59],q[39]; +cu1(1.4980281131695715e-06) q[60],q[39]; +cu1(7.490140565847857e-07) q[61],q[39]; +h q[40]; +cu1(1.5707963267948966) q[41],q[40]; +cu1(0.7853981633974483) q[42],q[40]; +cu1(0.39269908169872414) q[43],q[40]; +cu1(0.19634954084936207) q[44],q[40]; +cu1(0.09817477042468103) q[45],q[40]; +cu1(0.04908738521234052) q[46],q[40]; +cu1(0.02454369260617026) q[47],q[40]; +cu1(0.01227184630308513) q[48],q[40]; +cu1(0.006135923151542565) q[49],q[40]; +cu1(0.0030679615757712823) q[50],q[40]; +cu1(0.0015339807878856412) q[51],q[40]; +cu1(0.0007669903939428206) q[52],q[40]; +cu1(0.0003834951969714103) q[53],q[40]; +cu1(0.00019174759848570515) q[54],q[40]; +cu1(9.587379924285257e-05) q[55],q[40]; +cu1(4.7936899621426287e-05) q[56],q[40]; +cu1(2.3968449810713143e-05) q[57],q[40]; +cu1(1.1984224905356572e-05) q[58],q[40]; +cu1(5.992112452678286e-06) q[59],q[40]; +cu1(2.996056226339143e-06) q[60],q[40]; +cu1(1.4980281131695715e-06) q[61],q[40]; +h q[41]; +cu1(1.5707963267948966) q[42],q[41]; +cu1(0.7853981633974483) q[43],q[41]; +cu1(0.39269908169872414) q[44],q[41]; +cu1(0.19634954084936207) q[45],q[41]; +cu1(0.09817477042468103) q[46],q[41]; +cu1(0.04908738521234052) q[47],q[41]; +cu1(0.02454369260617026) q[48],q[41]; +cu1(0.01227184630308513) q[49],q[41]; +cu1(0.006135923151542565) q[50],q[41]; +cu1(0.0030679615757712823) q[51],q[41]; +cu1(0.0015339807878856412) q[52],q[41]; +cu1(0.0007669903939428206) q[53],q[41]; +cu1(0.0003834951969714103) q[54],q[41]; +cu1(0.00019174759848570515) q[55],q[41]; +cu1(9.587379924285257e-05) q[56],q[41]; +cu1(4.7936899621426287e-05) q[57],q[41]; +cu1(2.3968449810713143e-05) q[58],q[41]; +cu1(1.1984224905356572e-05) q[59],q[41]; +cu1(5.992112452678286e-06) q[60],q[41]; +cu1(2.996056226339143e-06) q[61],q[41]; +h q[42]; +cu1(1.5707963267948966) q[43],q[42]; +cu1(0.7853981633974483) q[44],q[42]; +cu1(0.39269908169872414) q[45],q[42]; +cu1(0.19634954084936207) q[46],q[42]; +cu1(0.09817477042468103) q[47],q[42]; +cu1(0.04908738521234052) q[48],q[42]; +cu1(0.02454369260617026) q[49],q[42]; +cu1(0.01227184630308513) q[50],q[42]; +cu1(0.006135923151542565) q[51],q[42]; +cu1(0.0030679615757712823) q[52],q[42]; +cu1(0.0015339807878856412) q[53],q[42]; +cu1(0.0007669903939428206) q[54],q[42]; +cu1(0.0003834951969714103) q[55],q[42]; +cu1(0.00019174759848570515) q[56],q[42]; +cu1(9.587379924285257e-05) q[57],q[42]; +cu1(4.7936899621426287e-05) q[58],q[42]; +cu1(2.3968449810713143e-05) q[59],q[42]; +cu1(1.1984224905356572e-05) q[60],q[42]; +cu1(5.992112452678286e-06) q[61],q[42]; +h q[43]; +cu1(1.5707963267948966) q[44],q[43]; +cu1(0.7853981633974483) q[45],q[43]; +cu1(0.39269908169872414) q[46],q[43]; +cu1(0.19634954084936207) q[47],q[43]; +cu1(0.09817477042468103) q[48],q[43]; +cu1(0.04908738521234052) q[49],q[43]; +cu1(0.02454369260617026) q[50],q[43]; +cu1(0.01227184630308513) q[51],q[43]; +cu1(0.006135923151542565) q[52],q[43]; +cu1(0.0030679615757712823) q[53],q[43]; +cu1(0.0015339807878856412) q[54],q[43]; +cu1(0.0007669903939428206) q[55],q[43]; +cu1(0.0003834951969714103) q[56],q[43]; +cu1(0.00019174759848570515) q[57],q[43]; +cu1(9.587379924285257e-05) q[58],q[43]; +cu1(4.7936899621426287e-05) q[59],q[43]; +cu1(2.3968449810713143e-05) q[60],q[43]; +cu1(1.1984224905356572e-05) q[61],q[43]; +h q[44]; +cu1(1.5707963267948966) q[45],q[44]; +cu1(0.7853981633974483) q[46],q[44]; +cu1(0.39269908169872414) q[47],q[44]; +cu1(0.19634954084936207) q[48],q[44]; +cu1(0.09817477042468103) q[49],q[44]; +cu1(0.04908738521234052) q[50],q[44]; +cu1(0.02454369260617026) q[51],q[44]; +cu1(0.01227184630308513) q[52],q[44]; +cu1(0.006135923151542565) q[53],q[44]; +cu1(0.0030679615757712823) q[54],q[44]; +cu1(0.0015339807878856412) q[55],q[44]; +cu1(0.0007669903939428206) q[56],q[44]; +cu1(0.0003834951969714103) q[57],q[44]; +cu1(0.00019174759848570515) q[58],q[44]; +cu1(9.587379924285257e-05) q[59],q[44]; +cu1(4.7936899621426287e-05) q[60],q[44]; +cu1(2.3968449810713143e-05) q[61],q[44]; +h q[45]; +cu1(1.5707963267948966) q[46],q[45]; +cu1(0.7853981633974483) q[47],q[45]; +cu1(0.39269908169872414) q[48],q[45]; +cu1(0.19634954084936207) q[49],q[45]; +cu1(0.09817477042468103) q[50],q[45]; +cu1(0.04908738521234052) q[51],q[45]; +cu1(0.02454369260617026) q[52],q[45]; +cu1(0.01227184630308513) q[53],q[45]; +cu1(0.006135923151542565) q[54],q[45]; +cu1(0.0030679615757712823) q[55],q[45]; +cu1(0.0015339807878856412) q[56],q[45]; +cu1(0.0007669903939428206) q[57],q[45]; +cu1(0.0003834951969714103) q[58],q[45]; +cu1(0.00019174759848570515) q[59],q[45]; +cu1(9.587379924285257e-05) q[60],q[45]; +cu1(4.7936899621426287e-05) q[61],q[45]; +h q[46]; +cu1(1.5707963267948966) q[47],q[46]; +cu1(0.7853981633974483) q[48],q[46]; +cu1(0.39269908169872414) q[49],q[46]; +cu1(0.19634954084936207) q[50],q[46]; +cu1(0.09817477042468103) q[51],q[46]; +cu1(0.04908738521234052) q[52],q[46]; +cu1(0.02454369260617026) q[53],q[46]; +cu1(0.01227184630308513) q[54],q[46]; +cu1(0.006135923151542565) q[55],q[46]; +cu1(0.0030679615757712823) q[56],q[46]; +cu1(0.0015339807878856412) q[57],q[46]; +cu1(0.0007669903939428206) q[58],q[46]; +cu1(0.0003834951969714103) q[59],q[46]; +cu1(0.00019174759848570515) q[60],q[46]; +cu1(9.587379924285257e-05) q[61],q[46]; +h q[47]; +cu1(1.5707963267948966) q[48],q[47]; +cu1(0.7853981633974483) q[49],q[47]; +cu1(0.39269908169872414) q[50],q[47]; +cu1(0.19634954084936207) q[51],q[47]; +cu1(0.09817477042468103) q[52],q[47]; +cu1(0.04908738521234052) q[53],q[47]; +cu1(0.02454369260617026) q[54],q[47]; +cu1(0.01227184630308513) q[55],q[47]; +cu1(0.006135923151542565) q[56],q[47]; +cu1(0.0030679615757712823) q[57],q[47]; +cu1(0.0015339807878856412) q[58],q[47]; +cu1(0.0007669903939428206) q[59],q[47]; +cu1(0.0003834951969714103) q[60],q[47]; +cu1(0.00019174759848570515) q[61],q[47]; +h q[48]; +cu1(1.5707963267948966) q[49],q[48]; +cu1(0.7853981633974483) q[50],q[48]; +cu1(0.39269908169872414) q[51],q[48]; +cu1(0.19634954084936207) q[52],q[48]; +cu1(0.09817477042468103) q[53],q[48]; +cu1(0.04908738521234052) q[54],q[48]; +cu1(0.02454369260617026) q[55],q[48]; +cu1(0.01227184630308513) q[56],q[48]; +cu1(0.006135923151542565) q[57],q[48]; +cu1(0.0030679615757712823) q[58],q[48]; +cu1(0.0015339807878856412) q[59],q[48]; +cu1(0.0007669903939428206) q[60],q[48]; +cu1(0.0003834951969714103) q[61],q[48]; +h q[49]; +cu1(1.5707963267948966) q[50],q[49]; +cu1(0.7853981633974483) q[51],q[49]; +cu1(0.39269908169872414) q[52],q[49]; +cu1(0.19634954084936207) q[53],q[49]; +cu1(0.09817477042468103) q[54],q[49]; +cu1(0.04908738521234052) q[55],q[49]; +cu1(0.02454369260617026) q[56],q[49]; +cu1(0.01227184630308513) q[57],q[49]; +cu1(0.006135923151542565) q[58],q[49]; +cu1(0.0030679615757712823) q[59],q[49]; +cu1(0.0015339807878856412) q[60],q[49]; +cu1(0.0007669903939428206) q[61],q[49]; +h q[50]; +cu1(1.5707963267948966) q[51],q[50]; +cu1(0.7853981633974483) q[52],q[50]; +cu1(0.39269908169872414) q[53],q[50]; +cu1(0.19634954084936207) q[54],q[50]; +cu1(0.09817477042468103) q[55],q[50]; +cu1(0.04908738521234052) q[56],q[50]; +cu1(0.02454369260617026) q[57],q[50]; +cu1(0.01227184630308513) q[58],q[50]; +cu1(0.006135923151542565) q[59],q[50]; +cu1(0.0030679615757712823) q[60],q[50]; +cu1(0.0015339807878856412) q[61],q[50]; +h q[51]; +cu1(1.5707963267948966) q[52],q[51]; +cu1(0.7853981633974483) q[53],q[51]; +cu1(0.39269908169872414) q[54],q[51]; +cu1(0.19634954084936207) q[55],q[51]; +cu1(0.09817477042468103) q[56],q[51]; +cu1(0.04908738521234052) q[57],q[51]; +cu1(0.02454369260617026) q[58],q[51]; +cu1(0.01227184630308513) q[59],q[51]; +cu1(0.006135923151542565) q[60],q[51]; +cu1(0.0030679615757712823) q[61],q[51]; +h q[52]; +cu1(1.5707963267948966) q[53],q[52]; +cu1(0.7853981633974483) q[54],q[52]; +cu1(0.39269908169872414) q[55],q[52]; +cu1(0.19634954084936207) q[56],q[52]; +cu1(0.09817477042468103) q[57],q[52]; +cu1(0.04908738521234052) q[58],q[52]; +cu1(0.02454369260617026) q[59],q[52]; +cu1(0.01227184630308513) q[60],q[52]; +cu1(0.006135923151542565) q[61],q[52]; +h q[53]; +cu1(1.5707963267948966) q[54],q[53]; +cu1(0.7853981633974483) q[55],q[53]; +cu1(0.39269908169872414) q[56],q[53]; +cu1(0.19634954084936207) q[57],q[53]; +cu1(0.09817477042468103) q[58],q[53]; +cu1(0.04908738521234052) q[59],q[53]; +cu1(0.02454369260617026) q[60],q[53]; +cu1(0.01227184630308513) q[61],q[53]; +h q[54]; +cu1(1.5707963267948966) q[55],q[54]; +cu1(0.7853981633974483) q[56],q[54]; +cu1(0.39269908169872414) q[57],q[54]; +cu1(0.19634954084936207) q[58],q[54]; +cu1(0.09817477042468103) q[59],q[54]; +cu1(0.04908738521234052) q[60],q[54]; +cu1(0.02454369260617026) q[61],q[54]; +h q[55]; +cu1(1.5707963267948966) q[56],q[55]; +cu1(0.7853981633974483) q[57],q[55]; +cu1(0.39269908169872414) q[58],q[55]; +cu1(0.19634954084936207) q[59],q[55]; +cu1(0.09817477042468103) q[60],q[55]; +cu1(0.04908738521234052) q[61],q[55]; +h q[56]; +cu1(1.5707963267948966) q[57],q[56]; +cu1(0.7853981633974483) q[58],q[56]; +cu1(0.39269908169872414) q[59],q[56]; +cu1(0.19634954084936207) q[60],q[56]; +cu1(0.09817477042468103) q[61],q[56]; +h q[57]; +cu1(1.5707963267948966) q[58],q[57]; +cu1(0.7853981633974483) q[59],q[57]; +cu1(0.39269908169872414) q[60],q[57]; +cu1(0.19634954084936207) q[61],q[57]; +h q[58]; +cu1(1.5707963267948966) q[59],q[58]; +cu1(0.7853981633974483) q[60],q[58]; +cu1(0.39269908169872414) q[61],q[58]; +h q[59]; +cu1(1.5707963267948966) q[60],q[59]; +cu1(0.7853981633974483) q[61],q[59]; +h q[60]; +cu1(1.5707963267948966) q[61],q[60]; +h q[61]; diff --git a/QASM_files/qft_6qubits.qasm b/QASM_files/qft_6qubits.qasm new file mode 100644 index 0000000..97e147a --- /dev/null +++ b/QASM_files/qft_6qubits.qasm @@ -0,0 +1,26 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[6]; +creg c[6]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +h q[5]; diff --git a/QASM_files/qft_8qubits.qasm b/QASM_files/qft_8qubits.qasm new file mode 100644 index 0000000..6462782 --- /dev/null +++ b/QASM_files/qft_8qubits.qasm @@ -0,0 +1,41 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[8]; +creg c[8]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +cu1(0.04908738521234052) q[6],q[0]; +cu1(0.02454369260617026) q[7],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +cu1(0.09817477042468103) q[6],q[1]; +cu1(0.04908738521234052) q[7],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +cu1(0.19634954084936207) q[6],q[2]; +cu1(0.09817477042468103) q[7],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +cu1(0.39269908169872414) q[6],q[3]; +cu1(0.19634954084936207) q[7],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +cu1(0.7853981633974483) q[6],q[4]; +cu1(0.39269908169872414) q[7],q[4]; +h q[5]; +cu1(1.5707963267948966) q[6],q[5]; +cu1(0.7853981633974483) q[7],q[5]; +h q[6]; +cu1(1.5707963267948966) q[7],q[6]; +h q[7]; diff --git a/QASM_files/qft_90qubits.qasm b/QASM_files/qft_90qubits.qasm new file mode 100644 index 0000000..68e1f92 --- /dev/null +++ b/QASM_files/qft_90qubits.qasm @@ -0,0 +1,4100 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[90]; +creg c[90]; + +h q[0]; +cu1(1.5707963267948966) q[1],q[0]; +cu1(0.7853981633974483) q[2],q[0]; +cu1(0.39269908169872414) q[3],q[0]; +cu1(0.19634954084936207) q[4],q[0]; +cu1(0.09817477042468103) q[5],q[0]; +cu1(0.04908738521234052) q[6],q[0]; +cu1(0.02454369260617026) q[7],q[0]; +cu1(0.01227184630308513) q[8],q[0]; +cu1(0.006135923151542565) q[9],q[0]; +cu1(0.0030679615757712823) q[10],q[0]; +cu1(0.0015339807878856412) q[11],q[0]; +cu1(0.0007669903939428206) q[12],q[0]; +cu1(0.0003834951969714103) q[13],q[0]; +cu1(0.00019174759848570515) q[14],q[0]; +cu1(9.587379924285257e-05) q[15],q[0]; +cu1(4.7936899621426287e-05) q[16],q[0]; +cu1(2.3968449810713143e-05) q[17],q[0]; +cu1(1.1984224905356572e-05) q[18],q[0]; +cu1(5.992112452678286e-06) q[19],q[0]; +cu1(2.996056226339143e-06) q[20],q[0]; +cu1(1.4980281131695715e-06) q[21],q[0]; +cu1(7.490140565847857e-07) q[22],q[0]; +cu1(3.7450702829239286e-07) q[23],q[0]; +cu1(1.8725351414619643e-07) q[24],q[0]; +cu1(9.362675707309822e-08) q[25],q[0]; +cu1(4.681337853654911e-08) q[26],q[0]; +cu1(2.3406689268274554e-08) q[27],q[0]; +cu1(1.1703344634137277e-08) q[28],q[0]; +cu1(5.8516723170686385e-09) q[29],q[0]; +cu1(2.9258361585343192e-09) q[30],q[0]; +cu1(1.4629180792671596e-09) q[31],q[0]; +cu1(7.314590396335798e-10) q[32],q[0]; +cu1(3.657295198167899e-10) q[33],q[0]; +cu1(1.8286475990839495e-10) q[34],q[0]; +cu1(9.143237995419748e-11) q[35],q[0]; +cu1(4.571618997709874e-11) q[36],q[0]; +cu1(2.285809498854937e-11) q[37],q[0]; +cu1(1.1429047494274685e-11) q[38],q[0]; +cu1(5.714523747137342e-12) q[39],q[0]; +cu1(2.857261873568671e-12) q[40],q[0]; +cu1(1.4286309367843356e-12) q[41],q[0]; +cu1(7.143154683921678e-13) q[42],q[0]; +cu1(3.571577341960839e-13) q[43],q[0]; +cu1(1.7857886709804195e-13) q[44],q[0]; +cu1(8.928943354902097e-14) q[45],q[0]; +cu1(4.4644716774510487e-14) q[46],q[0]; +cu1(2.2322358387255243e-14) q[47],q[0]; +cu1(1.1161179193627622e-14) q[48],q[0]; +cu1(5.580589596813811e-15) q[49],q[0]; +cu1(2.7902947984069054e-15) q[50],q[0]; +cu1(1.3951473992034527e-15) q[51],q[0]; +cu1(6.975736996017264e-16) q[52],q[0]; +cu1(3.487868498008632e-16) q[53],q[0]; +cu1(1.743934249004316e-16) q[54],q[0]; +cu1(8.71967124502158e-17) q[55],q[0]; +cu1(4.35983562251079e-17) q[56],q[0]; +cu1(2.179917811255395e-17) q[57],q[0]; +cu1(1.0899589056276974e-17) q[58],q[0]; +cu1(5.449794528138487e-18) q[59],q[0]; +cu1(2.7248972640692436e-18) q[60],q[0]; +cu1(1.3624486320346218e-18) q[61],q[0]; +cu1(6.812243160173109e-19) q[62],q[0]; +cu1(3.4061215800865545e-19) q[63],q[0]; +cu1(1.7030607900432772e-19) q[64],q[0]; +cu1(8.515303950216386e-20) q[65],q[0]; +cu1(4.257651975108193e-20) q[66],q[0]; +cu1(2.1288259875540965e-20) q[67],q[0]; +cu1(1.0644129937770483e-20) q[68],q[0]; +cu1(5.322064968885241e-21) q[69],q[0]; +cu1(2.6610324844426207e-21) q[70],q[0]; +cu1(1.3305162422213103e-21) q[71],q[0]; +cu1(6.652581211106552e-22) q[72],q[0]; +cu1(3.326290605553276e-22) q[73],q[0]; +cu1(1.663145302776638e-22) q[74],q[0]; +cu1(8.31572651388319e-23) q[75],q[0]; +cu1(4.157863256941595e-23) q[76],q[0]; +cu1(2.0789316284707974e-23) q[77],q[0]; +cu1(1.0394658142353987e-23) q[78],q[0]; +cu1(5.1973290711769935e-24) q[79],q[0]; +cu1(2.5986645355884967e-24) q[80],q[0]; +cu1(1.2993322677942484e-24) q[81],q[0]; +cu1(6.496661338971242e-25) q[82],q[0]; +cu1(3.248330669485621e-25) q[83],q[0]; +cu1(1.6241653347428105e-25) q[84],q[0]; +cu1(8.120826673714052e-26) q[85],q[0]; +cu1(4.060413336857026e-26) q[86],q[0]; +cu1(2.030206668428513e-26) q[87],q[0]; +cu1(1.0151033342142565e-26) q[88],q[0]; +cu1(5.075516671071283e-27) q[89],q[0]; +h q[1]; +cu1(1.5707963267948966) q[2],q[1]; +cu1(0.7853981633974483) q[3],q[1]; +cu1(0.39269908169872414) q[4],q[1]; +cu1(0.19634954084936207) q[5],q[1]; +cu1(0.09817477042468103) q[6],q[1]; +cu1(0.04908738521234052) q[7],q[1]; +cu1(0.02454369260617026) q[8],q[1]; +cu1(0.01227184630308513) q[9],q[1]; +cu1(0.006135923151542565) q[10],q[1]; +cu1(0.0030679615757712823) q[11],q[1]; +cu1(0.0015339807878856412) q[12],q[1]; +cu1(0.0007669903939428206) q[13],q[1]; +cu1(0.0003834951969714103) q[14],q[1]; +cu1(0.00019174759848570515) q[15],q[1]; +cu1(9.587379924285257e-05) q[16],q[1]; +cu1(4.7936899621426287e-05) q[17],q[1]; +cu1(2.3968449810713143e-05) q[18],q[1]; +cu1(1.1984224905356572e-05) q[19],q[1]; +cu1(5.992112452678286e-06) q[20],q[1]; +cu1(2.996056226339143e-06) q[21],q[1]; +cu1(1.4980281131695715e-06) q[22],q[1]; +cu1(7.490140565847857e-07) q[23],q[1]; +cu1(3.7450702829239286e-07) q[24],q[1]; +cu1(1.8725351414619643e-07) q[25],q[1]; +cu1(9.362675707309822e-08) q[26],q[1]; +cu1(4.681337853654911e-08) q[27],q[1]; +cu1(2.3406689268274554e-08) q[28],q[1]; +cu1(1.1703344634137277e-08) q[29],q[1]; +cu1(5.8516723170686385e-09) q[30],q[1]; +cu1(2.9258361585343192e-09) q[31],q[1]; +cu1(1.4629180792671596e-09) q[32],q[1]; +cu1(7.314590396335798e-10) q[33],q[1]; +cu1(3.657295198167899e-10) q[34],q[1]; +cu1(1.8286475990839495e-10) q[35],q[1]; +cu1(9.143237995419748e-11) q[36],q[1]; +cu1(4.571618997709874e-11) q[37],q[1]; +cu1(2.285809498854937e-11) q[38],q[1]; +cu1(1.1429047494274685e-11) q[39],q[1]; +cu1(5.714523747137342e-12) q[40],q[1]; +cu1(2.857261873568671e-12) q[41],q[1]; +cu1(1.4286309367843356e-12) q[42],q[1]; +cu1(7.143154683921678e-13) q[43],q[1]; +cu1(3.571577341960839e-13) q[44],q[1]; +cu1(1.7857886709804195e-13) q[45],q[1]; +cu1(8.928943354902097e-14) q[46],q[1]; +cu1(4.4644716774510487e-14) q[47],q[1]; +cu1(2.2322358387255243e-14) q[48],q[1]; +cu1(1.1161179193627622e-14) q[49],q[1]; +cu1(5.580589596813811e-15) q[50],q[1]; +cu1(2.7902947984069054e-15) q[51],q[1]; +cu1(1.3951473992034527e-15) q[52],q[1]; +cu1(6.975736996017264e-16) q[53],q[1]; +cu1(3.487868498008632e-16) q[54],q[1]; +cu1(1.743934249004316e-16) q[55],q[1]; +cu1(8.71967124502158e-17) q[56],q[1]; +cu1(4.35983562251079e-17) q[57],q[1]; +cu1(2.179917811255395e-17) q[58],q[1]; +cu1(1.0899589056276974e-17) q[59],q[1]; +cu1(5.449794528138487e-18) q[60],q[1]; +cu1(2.7248972640692436e-18) q[61],q[1]; +cu1(1.3624486320346218e-18) q[62],q[1]; +cu1(6.812243160173109e-19) q[63],q[1]; +cu1(3.4061215800865545e-19) q[64],q[1]; +cu1(1.7030607900432772e-19) q[65],q[1]; +cu1(8.515303950216386e-20) q[66],q[1]; +cu1(4.257651975108193e-20) q[67],q[1]; +cu1(2.1288259875540965e-20) q[68],q[1]; +cu1(1.0644129937770483e-20) q[69],q[1]; +cu1(5.322064968885241e-21) q[70],q[1]; +cu1(2.6610324844426207e-21) q[71],q[1]; +cu1(1.3305162422213103e-21) q[72],q[1]; +cu1(6.652581211106552e-22) q[73],q[1]; +cu1(3.326290605553276e-22) q[74],q[1]; +cu1(1.663145302776638e-22) q[75],q[1]; +cu1(8.31572651388319e-23) q[76],q[1]; +cu1(4.157863256941595e-23) q[77],q[1]; +cu1(2.0789316284707974e-23) q[78],q[1]; +cu1(1.0394658142353987e-23) q[79],q[1]; +cu1(5.1973290711769935e-24) q[80],q[1]; +cu1(2.5986645355884967e-24) q[81],q[1]; +cu1(1.2993322677942484e-24) q[82],q[1]; +cu1(6.496661338971242e-25) q[83],q[1]; +cu1(3.248330669485621e-25) q[84],q[1]; +cu1(1.6241653347428105e-25) q[85],q[1]; +cu1(8.120826673714052e-26) q[86],q[1]; +cu1(4.060413336857026e-26) q[87],q[1]; +cu1(2.030206668428513e-26) q[88],q[1]; +cu1(1.0151033342142565e-26) q[89],q[1]; +h q[2]; +cu1(1.5707963267948966) q[3],q[2]; +cu1(0.7853981633974483) q[4],q[2]; +cu1(0.39269908169872414) q[5],q[2]; +cu1(0.19634954084936207) q[6],q[2]; +cu1(0.09817477042468103) q[7],q[2]; +cu1(0.04908738521234052) q[8],q[2]; +cu1(0.02454369260617026) q[9],q[2]; +cu1(0.01227184630308513) q[10],q[2]; +cu1(0.006135923151542565) q[11],q[2]; +cu1(0.0030679615757712823) q[12],q[2]; +cu1(0.0015339807878856412) q[13],q[2]; +cu1(0.0007669903939428206) q[14],q[2]; +cu1(0.0003834951969714103) q[15],q[2]; +cu1(0.00019174759848570515) q[16],q[2]; +cu1(9.587379924285257e-05) q[17],q[2]; +cu1(4.7936899621426287e-05) q[18],q[2]; +cu1(2.3968449810713143e-05) q[19],q[2]; +cu1(1.1984224905356572e-05) q[20],q[2]; +cu1(5.992112452678286e-06) q[21],q[2]; +cu1(2.996056226339143e-06) q[22],q[2]; +cu1(1.4980281131695715e-06) q[23],q[2]; +cu1(7.490140565847857e-07) q[24],q[2]; +cu1(3.7450702829239286e-07) q[25],q[2]; +cu1(1.8725351414619643e-07) q[26],q[2]; +cu1(9.362675707309822e-08) q[27],q[2]; +cu1(4.681337853654911e-08) q[28],q[2]; +cu1(2.3406689268274554e-08) q[29],q[2]; +cu1(1.1703344634137277e-08) q[30],q[2]; +cu1(5.8516723170686385e-09) q[31],q[2]; +cu1(2.9258361585343192e-09) q[32],q[2]; +cu1(1.4629180792671596e-09) q[33],q[2]; +cu1(7.314590396335798e-10) q[34],q[2]; +cu1(3.657295198167899e-10) q[35],q[2]; +cu1(1.8286475990839495e-10) q[36],q[2]; +cu1(9.143237995419748e-11) q[37],q[2]; +cu1(4.571618997709874e-11) q[38],q[2]; +cu1(2.285809498854937e-11) q[39],q[2]; +cu1(1.1429047494274685e-11) q[40],q[2]; +cu1(5.714523747137342e-12) q[41],q[2]; +cu1(2.857261873568671e-12) q[42],q[2]; +cu1(1.4286309367843356e-12) q[43],q[2]; +cu1(7.143154683921678e-13) q[44],q[2]; +cu1(3.571577341960839e-13) q[45],q[2]; +cu1(1.7857886709804195e-13) q[46],q[2]; +cu1(8.928943354902097e-14) q[47],q[2]; +cu1(4.4644716774510487e-14) q[48],q[2]; +cu1(2.2322358387255243e-14) q[49],q[2]; +cu1(1.1161179193627622e-14) q[50],q[2]; +cu1(5.580589596813811e-15) q[51],q[2]; +cu1(2.7902947984069054e-15) q[52],q[2]; +cu1(1.3951473992034527e-15) q[53],q[2]; +cu1(6.975736996017264e-16) q[54],q[2]; +cu1(3.487868498008632e-16) q[55],q[2]; +cu1(1.743934249004316e-16) q[56],q[2]; +cu1(8.71967124502158e-17) q[57],q[2]; +cu1(4.35983562251079e-17) q[58],q[2]; +cu1(2.179917811255395e-17) q[59],q[2]; +cu1(1.0899589056276974e-17) q[60],q[2]; +cu1(5.449794528138487e-18) q[61],q[2]; +cu1(2.7248972640692436e-18) q[62],q[2]; +cu1(1.3624486320346218e-18) q[63],q[2]; +cu1(6.812243160173109e-19) q[64],q[2]; +cu1(3.4061215800865545e-19) q[65],q[2]; +cu1(1.7030607900432772e-19) q[66],q[2]; +cu1(8.515303950216386e-20) q[67],q[2]; +cu1(4.257651975108193e-20) q[68],q[2]; +cu1(2.1288259875540965e-20) q[69],q[2]; +cu1(1.0644129937770483e-20) q[70],q[2]; +cu1(5.322064968885241e-21) q[71],q[2]; +cu1(2.6610324844426207e-21) q[72],q[2]; +cu1(1.3305162422213103e-21) q[73],q[2]; +cu1(6.652581211106552e-22) q[74],q[2]; +cu1(3.326290605553276e-22) q[75],q[2]; +cu1(1.663145302776638e-22) q[76],q[2]; +cu1(8.31572651388319e-23) q[77],q[2]; +cu1(4.157863256941595e-23) q[78],q[2]; +cu1(2.0789316284707974e-23) q[79],q[2]; +cu1(1.0394658142353987e-23) q[80],q[2]; +cu1(5.1973290711769935e-24) q[81],q[2]; +cu1(2.5986645355884967e-24) q[82],q[2]; +cu1(1.2993322677942484e-24) q[83],q[2]; +cu1(6.496661338971242e-25) q[84],q[2]; +cu1(3.248330669485621e-25) q[85],q[2]; +cu1(1.6241653347428105e-25) q[86],q[2]; +cu1(8.120826673714052e-26) q[87],q[2]; +cu1(4.060413336857026e-26) q[88],q[2]; +cu1(2.030206668428513e-26) q[89],q[2]; +h q[3]; +cu1(1.5707963267948966) q[4],q[3]; +cu1(0.7853981633974483) q[5],q[3]; +cu1(0.39269908169872414) q[6],q[3]; +cu1(0.19634954084936207) q[7],q[3]; +cu1(0.09817477042468103) q[8],q[3]; +cu1(0.04908738521234052) q[9],q[3]; +cu1(0.02454369260617026) q[10],q[3]; +cu1(0.01227184630308513) q[11],q[3]; +cu1(0.006135923151542565) q[12],q[3]; +cu1(0.0030679615757712823) q[13],q[3]; +cu1(0.0015339807878856412) q[14],q[3]; +cu1(0.0007669903939428206) q[15],q[3]; +cu1(0.0003834951969714103) q[16],q[3]; +cu1(0.00019174759848570515) q[17],q[3]; +cu1(9.587379924285257e-05) q[18],q[3]; +cu1(4.7936899621426287e-05) q[19],q[3]; +cu1(2.3968449810713143e-05) q[20],q[3]; +cu1(1.1984224905356572e-05) q[21],q[3]; +cu1(5.992112452678286e-06) q[22],q[3]; +cu1(2.996056226339143e-06) q[23],q[3]; +cu1(1.4980281131695715e-06) q[24],q[3]; +cu1(7.490140565847857e-07) q[25],q[3]; +cu1(3.7450702829239286e-07) q[26],q[3]; +cu1(1.8725351414619643e-07) q[27],q[3]; +cu1(9.362675707309822e-08) q[28],q[3]; +cu1(4.681337853654911e-08) q[29],q[3]; +cu1(2.3406689268274554e-08) q[30],q[3]; +cu1(1.1703344634137277e-08) q[31],q[3]; +cu1(5.8516723170686385e-09) q[32],q[3]; +cu1(2.9258361585343192e-09) q[33],q[3]; +cu1(1.4629180792671596e-09) q[34],q[3]; +cu1(7.314590396335798e-10) q[35],q[3]; +cu1(3.657295198167899e-10) q[36],q[3]; +cu1(1.8286475990839495e-10) q[37],q[3]; +cu1(9.143237995419748e-11) q[38],q[3]; +cu1(4.571618997709874e-11) q[39],q[3]; +cu1(2.285809498854937e-11) q[40],q[3]; +cu1(1.1429047494274685e-11) q[41],q[3]; +cu1(5.714523747137342e-12) q[42],q[3]; +cu1(2.857261873568671e-12) q[43],q[3]; +cu1(1.4286309367843356e-12) q[44],q[3]; +cu1(7.143154683921678e-13) q[45],q[3]; +cu1(3.571577341960839e-13) q[46],q[3]; +cu1(1.7857886709804195e-13) q[47],q[3]; +cu1(8.928943354902097e-14) q[48],q[3]; +cu1(4.4644716774510487e-14) q[49],q[3]; +cu1(2.2322358387255243e-14) q[50],q[3]; +cu1(1.1161179193627622e-14) q[51],q[3]; +cu1(5.580589596813811e-15) q[52],q[3]; +cu1(2.7902947984069054e-15) q[53],q[3]; +cu1(1.3951473992034527e-15) q[54],q[3]; +cu1(6.975736996017264e-16) q[55],q[3]; +cu1(3.487868498008632e-16) q[56],q[3]; +cu1(1.743934249004316e-16) q[57],q[3]; +cu1(8.71967124502158e-17) q[58],q[3]; +cu1(4.35983562251079e-17) q[59],q[3]; +cu1(2.179917811255395e-17) q[60],q[3]; +cu1(1.0899589056276974e-17) q[61],q[3]; +cu1(5.449794528138487e-18) q[62],q[3]; +cu1(2.7248972640692436e-18) q[63],q[3]; +cu1(1.3624486320346218e-18) q[64],q[3]; +cu1(6.812243160173109e-19) q[65],q[3]; +cu1(3.4061215800865545e-19) q[66],q[3]; +cu1(1.7030607900432772e-19) q[67],q[3]; +cu1(8.515303950216386e-20) q[68],q[3]; +cu1(4.257651975108193e-20) q[69],q[3]; +cu1(2.1288259875540965e-20) q[70],q[3]; +cu1(1.0644129937770483e-20) q[71],q[3]; +cu1(5.322064968885241e-21) q[72],q[3]; +cu1(2.6610324844426207e-21) q[73],q[3]; +cu1(1.3305162422213103e-21) q[74],q[3]; +cu1(6.652581211106552e-22) q[75],q[3]; +cu1(3.326290605553276e-22) q[76],q[3]; +cu1(1.663145302776638e-22) q[77],q[3]; +cu1(8.31572651388319e-23) q[78],q[3]; +cu1(4.157863256941595e-23) q[79],q[3]; +cu1(2.0789316284707974e-23) q[80],q[3]; +cu1(1.0394658142353987e-23) q[81],q[3]; +cu1(5.1973290711769935e-24) q[82],q[3]; +cu1(2.5986645355884967e-24) q[83],q[3]; +cu1(1.2993322677942484e-24) q[84],q[3]; +cu1(6.496661338971242e-25) q[85],q[3]; +cu1(3.248330669485621e-25) q[86],q[3]; +cu1(1.6241653347428105e-25) q[87],q[3]; +cu1(8.120826673714052e-26) q[88],q[3]; +cu1(4.060413336857026e-26) q[89],q[3]; +h q[4]; +cu1(1.5707963267948966) q[5],q[4]; +cu1(0.7853981633974483) q[6],q[4]; +cu1(0.39269908169872414) q[7],q[4]; +cu1(0.19634954084936207) q[8],q[4]; +cu1(0.09817477042468103) q[9],q[4]; +cu1(0.04908738521234052) q[10],q[4]; +cu1(0.02454369260617026) q[11],q[4]; +cu1(0.01227184630308513) q[12],q[4]; +cu1(0.006135923151542565) q[13],q[4]; +cu1(0.0030679615757712823) q[14],q[4]; +cu1(0.0015339807878856412) q[15],q[4]; +cu1(0.0007669903939428206) q[16],q[4]; +cu1(0.0003834951969714103) q[17],q[4]; +cu1(0.00019174759848570515) q[18],q[4]; +cu1(9.587379924285257e-05) q[19],q[4]; +cu1(4.7936899621426287e-05) q[20],q[4]; +cu1(2.3968449810713143e-05) q[21],q[4]; +cu1(1.1984224905356572e-05) q[22],q[4]; +cu1(5.992112452678286e-06) q[23],q[4]; +cu1(2.996056226339143e-06) q[24],q[4]; +cu1(1.4980281131695715e-06) q[25],q[4]; +cu1(7.490140565847857e-07) q[26],q[4]; +cu1(3.7450702829239286e-07) q[27],q[4]; +cu1(1.8725351414619643e-07) q[28],q[4]; +cu1(9.362675707309822e-08) q[29],q[4]; +cu1(4.681337853654911e-08) q[30],q[4]; +cu1(2.3406689268274554e-08) q[31],q[4]; +cu1(1.1703344634137277e-08) q[32],q[4]; +cu1(5.8516723170686385e-09) q[33],q[4]; +cu1(2.9258361585343192e-09) q[34],q[4]; +cu1(1.4629180792671596e-09) q[35],q[4]; +cu1(7.314590396335798e-10) q[36],q[4]; +cu1(3.657295198167899e-10) q[37],q[4]; +cu1(1.8286475990839495e-10) q[38],q[4]; +cu1(9.143237995419748e-11) q[39],q[4]; +cu1(4.571618997709874e-11) q[40],q[4]; +cu1(2.285809498854937e-11) q[41],q[4]; +cu1(1.1429047494274685e-11) q[42],q[4]; +cu1(5.714523747137342e-12) q[43],q[4]; +cu1(2.857261873568671e-12) q[44],q[4]; +cu1(1.4286309367843356e-12) q[45],q[4]; +cu1(7.143154683921678e-13) q[46],q[4]; +cu1(3.571577341960839e-13) q[47],q[4]; +cu1(1.7857886709804195e-13) q[48],q[4]; +cu1(8.928943354902097e-14) q[49],q[4]; +cu1(4.4644716774510487e-14) q[50],q[4]; +cu1(2.2322358387255243e-14) q[51],q[4]; +cu1(1.1161179193627622e-14) q[52],q[4]; +cu1(5.580589596813811e-15) q[53],q[4]; +cu1(2.7902947984069054e-15) q[54],q[4]; +cu1(1.3951473992034527e-15) q[55],q[4]; +cu1(6.975736996017264e-16) q[56],q[4]; +cu1(3.487868498008632e-16) q[57],q[4]; +cu1(1.743934249004316e-16) q[58],q[4]; +cu1(8.71967124502158e-17) q[59],q[4]; +cu1(4.35983562251079e-17) q[60],q[4]; +cu1(2.179917811255395e-17) q[61],q[4]; +cu1(1.0899589056276974e-17) q[62],q[4]; +cu1(5.449794528138487e-18) q[63],q[4]; +cu1(2.7248972640692436e-18) q[64],q[4]; +cu1(1.3624486320346218e-18) q[65],q[4]; +cu1(6.812243160173109e-19) q[66],q[4]; +cu1(3.4061215800865545e-19) q[67],q[4]; +cu1(1.7030607900432772e-19) q[68],q[4]; +cu1(8.515303950216386e-20) q[69],q[4]; +cu1(4.257651975108193e-20) q[70],q[4]; +cu1(2.1288259875540965e-20) q[71],q[4]; +cu1(1.0644129937770483e-20) q[72],q[4]; +cu1(5.322064968885241e-21) q[73],q[4]; +cu1(2.6610324844426207e-21) q[74],q[4]; +cu1(1.3305162422213103e-21) q[75],q[4]; +cu1(6.652581211106552e-22) q[76],q[4]; +cu1(3.326290605553276e-22) q[77],q[4]; +cu1(1.663145302776638e-22) q[78],q[4]; +cu1(8.31572651388319e-23) q[79],q[4]; +cu1(4.157863256941595e-23) q[80],q[4]; +cu1(2.0789316284707974e-23) q[81],q[4]; +cu1(1.0394658142353987e-23) q[82],q[4]; +cu1(5.1973290711769935e-24) q[83],q[4]; +cu1(2.5986645355884967e-24) q[84],q[4]; +cu1(1.2993322677942484e-24) q[85],q[4]; +cu1(6.496661338971242e-25) q[86],q[4]; +cu1(3.248330669485621e-25) q[87],q[4]; +cu1(1.6241653347428105e-25) q[88],q[4]; +cu1(8.120826673714052e-26) q[89],q[4]; +h q[5]; +cu1(1.5707963267948966) q[6],q[5]; +cu1(0.7853981633974483) q[7],q[5]; +cu1(0.39269908169872414) q[8],q[5]; +cu1(0.19634954084936207) q[9],q[5]; +cu1(0.09817477042468103) q[10],q[5]; +cu1(0.04908738521234052) q[11],q[5]; +cu1(0.02454369260617026) q[12],q[5]; +cu1(0.01227184630308513) q[13],q[5]; +cu1(0.006135923151542565) q[14],q[5]; +cu1(0.0030679615757712823) q[15],q[5]; +cu1(0.0015339807878856412) q[16],q[5]; +cu1(0.0007669903939428206) q[17],q[5]; +cu1(0.0003834951969714103) q[18],q[5]; +cu1(0.00019174759848570515) q[19],q[5]; +cu1(9.587379924285257e-05) q[20],q[5]; +cu1(4.7936899621426287e-05) q[21],q[5]; +cu1(2.3968449810713143e-05) q[22],q[5]; +cu1(1.1984224905356572e-05) q[23],q[5]; +cu1(5.992112452678286e-06) q[24],q[5]; +cu1(2.996056226339143e-06) q[25],q[5]; +cu1(1.4980281131695715e-06) q[26],q[5]; +cu1(7.490140565847857e-07) q[27],q[5]; +cu1(3.7450702829239286e-07) q[28],q[5]; +cu1(1.8725351414619643e-07) q[29],q[5]; +cu1(9.362675707309822e-08) q[30],q[5]; +cu1(4.681337853654911e-08) q[31],q[5]; +cu1(2.3406689268274554e-08) q[32],q[5]; +cu1(1.1703344634137277e-08) q[33],q[5]; +cu1(5.8516723170686385e-09) q[34],q[5]; +cu1(2.9258361585343192e-09) q[35],q[5]; +cu1(1.4629180792671596e-09) q[36],q[5]; +cu1(7.314590396335798e-10) q[37],q[5]; +cu1(3.657295198167899e-10) q[38],q[5]; +cu1(1.8286475990839495e-10) q[39],q[5]; +cu1(9.143237995419748e-11) q[40],q[5]; +cu1(4.571618997709874e-11) q[41],q[5]; +cu1(2.285809498854937e-11) q[42],q[5]; +cu1(1.1429047494274685e-11) q[43],q[5]; +cu1(5.714523747137342e-12) q[44],q[5]; +cu1(2.857261873568671e-12) q[45],q[5]; +cu1(1.4286309367843356e-12) q[46],q[5]; +cu1(7.143154683921678e-13) q[47],q[5]; +cu1(3.571577341960839e-13) q[48],q[5]; +cu1(1.7857886709804195e-13) q[49],q[5]; +cu1(8.928943354902097e-14) q[50],q[5]; +cu1(4.4644716774510487e-14) q[51],q[5]; +cu1(2.2322358387255243e-14) q[52],q[5]; +cu1(1.1161179193627622e-14) q[53],q[5]; +cu1(5.580589596813811e-15) q[54],q[5]; +cu1(2.7902947984069054e-15) q[55],q[5]; +cu1(1.3951473992034527e-15) q[56],q[5]; +cu1(6.975736996017264e-16) q[57],q[5]; +cu1(3.487868498008632e-16) q[58],q[5]; +cu1(1.743934249004316e-16) q[59],q[5]; +cu1(8.71967124502158e-17) q[60],q[5]; +cu1(4.35983562251079e-17) q[61],q[5]; +cu1(2.179917811255395e-17) q[62],q[5]; +cu1(1.0899589056276974e-17) q[63],q[5]; +cu1(5.449794528138487e-18) q[64],q[5]; +cu1(2.7248972640692436e-18) q[65],q[5]; +cu1(1.3624486320346218e-18) q[66],q[5]; +cu1(6.812243160173109e-19) q[67],q[5]; +cu1(3.4061215800865545e-19) q[68],q[5]; +cu1(1.7030607900432772e-19) q[69],q[5]; +cu1(8.515303950216386e-20) q[70],q[5]; +cu1(4.257651975108193e-20) q[71],q[5]; +cu1(2.1288259875540965e-20) q[72],q[5]; +cu1(1.0644129937770483e-20) q[73],q[5]; +cu1(5.322064968885241e-21) q[74],q[5]; +cu1(2.6610324844426207e-21) q[75],q[5]; +cu1(1.3305162422213103e-21) q[76],q[5]; +cu1(6.652581211106552e-22) q[77],q[5]; +cu1(3.326290605553276e-22) q[78],q[5]; +cu1(1.663145302776638e-22) q[79],q[5]; +cu1(8.31572651388319e-23) q[80],q[5]; +cu1(4.157863256941595e-23) q[81],q[5]; +cu1(2.0789316284707974e-23) q[82],q[5]; +cu1(1.0394658142353987e-23) q[83],q[5]; +cu1(5.1973290711769935e-24) q[84],q[5]; +cu1(2.5986645355884967e-24) q[85],q[5]; +cu1(1.2993322677942484e-24) q[86],q[5]; +cu1(6.496661338971242e-25) q[87],q[5]; +cu1(3.248330669485621e-25) q[88],q[5]; +cu1(1.6241653347428105e-25) q[89],q[5]; +h q[6]; +cu1(1.5707963267948966) q[7],q[6]; +cu1(0.7853981633974483) q[8],q[6]; +cu1(0.39269908169872414) q[9],q[6]; +cu1(0.19634954084936207) q[10],q[6]; +cu1(0.09817477042468103) q[11],q[6]; +cu1(0.04908738521234052) q[12],q[6]; +cu1(0.02454369260617026) q[13],q[6]; +cu1(0.01227184630308513) q[14],q[6]; +cu1(0.006135923151542565) q[15],q[6]; +cu1(0.0030679615757712823) q[16],q[6]; +cu1(0.0015339807878856412) q[17],q[6]; +cu1(0.0007669903939428206) q[18],q[6]; +cu1(0.0003834951969714103) q[19],q[6]; +cu1(0.00019174759848570515) q[20],q[6]; +cu1(9.587379924285257e-05) q[21],q[6]; +cu1(4.7936899621426287e-05) q[22],q[6]; +cu1(2.3968449810713143e-05) q[23],q[6]; +cu1(1.1984224905356572e-05) q[24],q[6]; +cu1(5.992112452678286e-06) q[25],q[6]; +cu1(2.996056226339143e-06) q[26],q[6]; +cu1(1.4980281131695715e-06) q[27],q[6]; +cu1(7.490140565847857e-07) q[28],q[6]; +cu1(3.7450702829239286e-07) q[29],q[6]; +cu1(1.8725351414619643e-07) q[30],q[6]; +cu1(9.362675707309822e-08) q[31],q[6]; +cu1(4.681337853654911e-08) q[32],q[6]; +cu1(2.3406689268274554e-08) q[33],q[6]; +cu1(1.1703344634137277e-08) q[34],q[6]; +cu1(5.8516723170686385e-09) q[35],q[6]; +cu1(2.9258361585343192e-09) q[36],q[6]; +cu1(1.4629180792671596e-09) q[37],q[6]; +cu1(7.314590396335798e-10) q[38],q[6]; +cu1(3.657295198167899e-10) q[39],q[6]; +cu1(1.8286475990839495e-10) q[40],q[6]; +cu1(9.143237995419748e-11) q[41],q[6]; +cu1(4.571618997709874e-11) q[42],q[6]; +cu1(2.285809498854937e-11) q[43],q[6]; +cu1(1.1429047494274685e-11) q[44],q[6]; +cu1(5.714523747137342e-12) q[45],q[6]; +cu1(2.857261873568671e-12) q[46],q[6]; +cu1(1.4286309367843356e-12) q[47],q[6]; +cu1(7.143154683921678e-13) q[48],q[6]; +cu1(3.571577341960839e-13) q[49],q[6]; +cu1(1.7857886709804195e-13) q[50],q[6]; +cu1(8.928943354902097e-14) q[51],q[6]; +cu1(4.4644716774510487e-14) q[52],q[6]; +cu1(2.2322358387255243e-14) q[53],q[6]; +cu1(1.1161179193627622e-14) q[54],q[6]; +cu1(5.580589596813811e-15) q[55],q[6]; +cu1(2.7902947984069054e-15) q[56],q[6]; +cu1(1.3951473992034527e-15) q[57],q[6]; +cu1(6.975736996017264e-16) q[58],q[6]; +cu1(3.487868498008632e-16) q[59],q[6]; +cu1(1.743934249004316e-16) q[60],q[6]; +cu1(8.71967124502158e-17) q[61],q[6]; +cu1(4.35983562251079e-17) q[62],q[6]; +cu1(2.179917811255395e-17) q[63],q[6]; +cu1(1.0899589056276974e-17) q[64],q[6]; +cu1(5.449794528138487e-18) q[65],q[6]; +cu1(2.7248972640692436e-18) q[66],q[6]; +cu1(1.3624486320346218e-18) q[67],q[6]; +cu1(6.812243160173109e-19) q[68],q[6]; +cu1(3.4061215800865545e-19) q[69],q[6]; +cu1(1.7030607900432772e-19) q[70],q[6]; +cu1(8.515303950216386e-20) q[71],q[6]; +cu1(4.257651975108193e-20) q[72],q[6]; +cu1(2.1288259875540965e-20) q[73],q[6]; +cu1(1.0644129937770483e-20) q[74],q[6]; +cu1(5.322064968885241e-21) q[75],q[6]; +cu1(2.6610324844426207e-21) q[76],q[6]; +cu1(1.3305162422213103e-21) q[77],q[6]; +cu1(6.652581211106552e-22) q[78],q[6]; +cu1(3.326290605553276e-22) q[79],q[6]; +cu1(1.663145302776638e-22) q[80],q[6]; +cu1(8.31572651388319e-23) q[81],q[6]; +cu1(4.157863256941595e-23) q[82],q[6]; +cu1(2.0789316284707974e-23) q[83],q[6]; +cu1(1.0394658142353987e-23) q[84],q[6]; +cu1(5.1973290711769935e-24) q[85],q[6]; +cu1(2.5986645355884967e-24) q[86],q[6]; +cu1(1.2993322677942484e-24) q[87],q[6]; +cu1(6.496661338971242e-25) q[88],q[6]; +cu1(3.248330669485621e-25) q[89],q[6]; +h q[7]; +cu1(1.5707963267948966) q[8],q[7]; +cu1(0.7853981633974483) q[9],q[7]; +cu1(0.39269908169872414) q[10],q[7]; +cu1(0.19634954084936207) q[11],q[7]; +cu1(0.09817477042468103) q[12],q[7]; +cu1(0.04908738521234052) q[13],q[7]; +cu1(0.02454369260617026) q[14],q[7]; +cu1(0.01227184630308513) q[15],q[7]; +cu1(0.006135923151542565) q[16],q[7]; +cu1(0.0030679615757712823) q[17],q[7]; +cu1(0.0015339807878856412) q[18],q[7]; +cu1(0.0007669903939428206) q[19],q[7]; +cu1(0.0003834951969714103) q[20],q[7]; +cu1(0.00019174759848570515) q[21],q[7]; +cu1(9.587379924285257e-05) q[22],q[7]; +cu1(4.7936899621426287e-05) q[23],q[7]; +cu1(2.3968449810713143e-05) q[24],q[7]; +cu1(1.1984224905356572e-05) q[25],q[7]; +cu1(5.992112452678286e-06) q[26],q[7]; +cu1(2.996056226339143e-06) q[27],q[7]; +cu1(1.4980281131695715e-06) q[28],q[7]; +cu1(7.490140565847857e-07) q[29],q[7]; +cu1(3.7450702829239286e-07) q[30],q[7]; +cu1(1.8725351414619643e-07) q[31],q[7]; +cu1(9.362675707309822e-08) q[32],q[7]; +cu1(4.681337853654911e-08) q[33],q[7]; +cu1(2.3406689268274554e-08) q[34],q[7]; +cu1(1.1703344634137277e-08) q[35],q[7]; +cu1(5.8516723170686385e-09) q[36],q[7]; +cu1(2.9258361585343192e-09) q[37],q[7]; +cu1(1.4629180792671596e-09) q[38],q[7]; +cu1(7.314590396335798e-10) q[39],q[7]; +cu1(3.657295198167899e-10) q[40],q[7]; +cu1(1.8286475990839495e-10) q[41],q[7]; +cu1(9.143237995419748e-11) q[42],q[7]; +cu1(4.571618997709874e-11) q[43],q[7]; +cu1(2.285809498854937e-11) q[44],q[7]; +cu1(1.1429047494274685e-11) q[45],q[7]; +cu1(5.714523747137342e-12) q[46],q[7]; +cu1(2.857261873568671e-12) q[47],q[7]; +cu1(1.4286309367843356e-12) q[48],q[7]; +cu1(7.143154683921678e-13) q[49],q[7]; +cu1(3.571577341960839e-13) q[50],q[7]; +cu1(1.7857886709804195e-13) q[51],q[7]; +cu1(8.928943354902097e-14) q[52],q[7]; +cu1(4.4644716774510487e-14) q[53],q[7]; +cu1(2.2322358387255243e-14) q[54],q[7]; +cu1(1.1161179193627622e-14) q[55],q[7]; +cu1(5.580589596813811e-15) q[56],q[7]; +cu1(2.7902947984069054e-15) q[57],q[7]; +cu1(1.3951473992034527e-15) q[58],q[7]; +cu1(6.975736996017264e-16) q[59],q[7]; +cu1(3.487868498008632e-16) q[60],q[7]; +cu1(1.743934249004316e-16) q[61],q[7]; +cu1(8.71967124502158e-17) q[62],q[7]; +cu1(4.35983562251079e-17) q[63],q[7]; +cu1(2.179917811255395e-17) q[64],q[7]; +cu1(1.0899589056276974e-17) q[65],q[7]; +cu1(5.449794528138487e-18) q[66],q[7]; +cu1(2.7248972640692436e-18) q[67],q[7]; +cu1(1.3624486320346218e-18) q[68],q[7]; +cu1(6.812243160173109e-19) q[69],q[7]; +cu1(3.4061215800865545e-19) q[70],q[7]; +cu1(1.7030607900432772e-19) q[71],q[7]; +cu1(8.515303950216386e-20) q[72],q[7]; +cu1(4.257651975108193e-20) q[73],q[7]; +cu1(2.1288259875540965e-20) q[74],q[7]; +cu1(1.0644129937770483e-20) q[75],q[7]; +cu1(5.322064968885241e-21) q[76],q[7]; +cu1(2.6610324844426207e-21) q[77],q[7]; +cu1(1.3305162422213103e-21) q[78],q[7]; +cu1(6.652581211106552e-22) q[79],q[7]; +cu1(3.326290605553276e-22) q[80],q[7]; +cu1(1.663145302776638e-22) q[81],q[7]; +cu1(8.31572651388319e-23) q[82],q[7]; +cu1(4.157863256941595e-23) q[83],q[7]; +cu1(2.0789316284707974e-23) q[84],q[7]; +cu1(1.0394658142353987e-23) q[85],q[7]; +cu1(5.1973290711769935e-24) q[86],q[7]; +cu1(2.5986645355884967e-24) q[87],q[7]; +cu1(1.2993322677942484e-24) q[88],q[7]; +cu1(6.496661338971242e-25) q[89],q[7]; +h q[8]; +cu1(1.5707963267948966) q[9],q[8]; +cu1(0.7853981633974483) q[10],q[8]; +cu1(0.39269908169872414) q[11],q[8]; +cu1(0.19634954084936207) q[12],q[8]; +cu1(0.09817477042468103) q[13],q[8]; +cu1(0.04908738521234052) q[14],q[8]; +cu1(0.02454369260617026) q[15],q[8]; +cu1(0.01227184630308513) q[16],q[8]; +cu1(0.006135923151542565) q[17],q[8]; +cu1(0.0030679615757712823) q[18],q[8]; +cu1(0.0015339807878856412) q[19],q[8]; +cu1(0.0007669903939428206) q[20],q[8]; +cu1(0.0003834951969714103) q[21],q[8]; +cu1(0.00019174759848570515) q[22],q[8]; +cu1(9.587379924285257e-05) q[23],q[8]; +cu1(4.7936899621426287e-05) q[24],q[8]; +cu1(2.3968449810713143e-05) q[25],q[8]; +cu1(1.1984224905356572e-05) q[26],q[8]; +cu1(5.992112452678286e-06) q[27],q[8]; +cu1(2.996056226339143e-06) q[28],q[8]; +cu1(1.4980281131695715e-06) q[29],q[8]; +cu1(7.490140565847857e-07) q[30],q[8]; +cu1(3.7450702829239286e-07) q[31],q[8]; +cu1(1.8725351414619643e-07) q[32],q[8]; +cu1(9.362675707309822e-08) q[33],q[8]; +cu1(4.681337853654911e-08) q[34],q[8]; +cu1(2.3406689268274554e-08) q[35],q[8]; +cu1(1.1703344634137277e-08) q[36],q[8]; +cu1(5.8516723170686385e-09) q[37],q[8]; +cu1(2.9258361585343192e-09) q[38],q[8]; +cu1(1.4629180792671596e-09) q[39],q[8]; +cu1(7.314590396335798e-10) q[40],q[8]; +cu1(3.657295198167899e-10) q[41],q[8]; +cu1(1.8286475990839495e-10) q[42],q[8]; +cu1(9.143237995419748e-11) q[43],q[8]; +cu1(4.571618997709874e-11) q[44],q[8]; +cu1(2.285809498854937e-11) q[45],q[8]; +cu1(1.1429047494274685e-11) q[46],q[8]; +cu1(5.714523747137342e-12) q[47],q[8]; +cu1(2.857261873568671e-12) q[48],q[8]; +cu1(1.4286309367843356e-12) q[49],q[8]; +cu1(7.143154683921678e-13) q[50],q[8]; +cu1(3.571577341960839e-13) q[51],q[8]; +cu1(1.7857886709804195e-13) q[52],q[8]; +cu1(8.928943354902097e-14) q[53],q[8]; +cu1(4.4644716774510487e-14) q[54],q[8]; +cu1(2.2322358387255243e-14) q[55],q[8]; +cu1(1.1161179193627622e-14) q[56],q[8]; +cu1(5.580589596813811e-15) q[57],q[8]; +cu1(2.7902947984069054e-15) q[58],q[8]; +cu1(1.3951473992034527e-15) q[59],q[8]; +cu1(6.975736996017264e-16) q[60],q[8]; +cu1(3.487868498008632e-16) q[61],q[8]; +cu1(1.743934249004316e-16) q[62],q[8]; +cu1(8.71967124502158e-17) q[63],q[8]; +cu1(4.35983562251079e-17) q[64],q[8]; +cu1(2.179917811255395e-17) q[65],q[8]; +cu1(1.0899589056276974e-17) q[66],q[8]; +cu1(5.449794528138487e-18) q[67],q[8]; +cu1(2.7248972640692436e-18) q[68],q[8]; +cu1(1.3624486320346218e-18) q[69],q[8]; +cu1(6.812243160173109e-19) q[70],q[8]; +cu1(3.4061215800865545e-19) q[71],q[8]; +cu1(1.7030607900432772e-19) q[72],q[8]; +cu1(8.515303950216386e-20) q[73],q[8]; +cu1(4.257651975108193e-20) q[74],q[8]; +cu1(2.1288259875540965e-20) q[75],q[8]; +cu1(1.0644129937770483e-20) q[76],q[8]; +cu1(5.322064968885241e-21) q[77],q[8]; +cu1(2.6610324844426207e-21) q[78],q[8]; +cu1(1.3305162422213103e-21) q[79],q[8]; +cu1(6.652581211106552e-22) q[80],q[8]; +cu1(3.326290605553276e-22) q[81],q[8]; +cu1(1.663145302776638e-22) q[82],q[8]; +cu1(8.31572651388319e-23) q[83],q[8]; +cu1(4.157863256941595e-23) q[84],q[8]; +cu1(2.0789316284707974e-23) q[85],q[8]; +cu1(1.0394658142353987e-23) q[86],q[8]; +cu1(5.1973290711769935e-24) q[87],q[8]; +cu1(2.5986645355884967e-24) q[88],q[8]; +cu1(1.2993322677942484e-24) q[89],q[8]; +h q[9]; +cu1(1.5707963267948966) q[10],q[9]; +cu1(0.7853981633974483) q[11],q[9]; +cu1(0.39269908169872414) q[12],q[9]; +cu1(0.19634954084936207) q[13],q[9]; +cu1(0.09817477042468103) q[14],q[9]; +cu1(0.04908738521234052) q[15],q[9]; +cu1(0.02454369260617026) q[16],q[9]; +cu1(0.01227184630308513) q[17],q[9]; +cu1(0.006135923151542565) q[18],q[9]; +cu1(0.0030679615757712823) q[19],q[9]; +cu1(0.0015339807878856412) q[20],q[9]; +cu1(0.0007669903939428206) q[21],q[9]; +cu1(0.0003834951969714103) q[22],q[9]; +cu1(0.00019174759848570515) q[23],q[9]; +cu1(9.587379924285257e-05) q[24],q[9]; +cu1(4.7936899621426287e-05) q[25],q[9]; +cu1(2.3968449810713143e-05) q[26],q[9]; +cu1(1.1984224905356572e-05) q[27],q[9]; +cu1(5.992112452678286e-06) q[28],q[9]; +cu1(2.996056226339143e-06) q[29],q[9]; +cu1(1.4980281131695715e-06) q[30],q[9]; +cu1(7.490140565847857e-07) q[31],q[9]; +cu1(3.7450702829239286e-07) q[32],q[9]; +cu1(1.8725351414619643e-07) q[33],q[9]; +cu1(9.362675707309822e-08) q[34],q[9]; +cu1(4.681337853654911e-08) q[35],q[9]; +cu1(2.3406689268274554e-08) q[36],q[9]; +cu1(1.1703344634137277e-08) q[37],q[9]; +cu1(5.8516723170686385e-09) q[38],q[9]; +cu1(2.9258361585343192e-09) q[39],q[9]; +cu1(1.4629180792671596e-09) q[40],q[9]; +cu1(7.314590396335798e-10) q[41],q[9]; +cu1(3.657295198167899e-10) q[42],q[9]; +cu1(1.8286475990839495e-10) q[43],q[9]; +cu1(9.143237995419748e-11) q[44],q[9]; +cu1(4.571618997709874e-11) q[45],q[9]; +cu1(2.285809498854937e-11) q[46],q[9]; +cu1(1.1429047494274685e-11) q[47],q[9]; +cu1(5.714523747137342e-12) q[48],q[9]; +cu1(2.857261873568671e-12) q[49],q[9]; +cu1(1.4286309367843356e-12) q[50],q[9]; +cu1(7.143154683921678e-13) q[51],q[9]; +cu1(3.571577341960839e-13) q[52],q[9]; +cu1(1.7857886709804195e-13) q[53],q[9]; +cu1(8.928943354902097e-14) q[54],q[9]; +cu1(4.4644716774510487e-14) q[55],q[9]; +cu1(2.2322358387255243e-14) q[56],q[9]; +cu1(1.1161179193627622e-14) q[57],q[9]; +cu1(5.580589596813811e-15) q[58],q[9]; +cu1(2.7902947984069054e-15) q[59],q[9]; +cu1(1.3951473992034527e-15) q[60],q[9]; +cu1(6.975736996017264e-16) q[61],q[9]; +cu1(3.487868498008632e-16) q[62],q[9]; +cu1(1.743934249004316e-16) q[63],q[9]; +cu1(8.71967124502158e-17) q[64],q[9]; +cu1(4.35983562251079e-17) q[65],q[9]; +cu1(2.179917811255395e-17) q[66],q[9]; +cu1(1.0899589056276974e-17) q[67],q[9]; +cu1(5.449794528138487e-18) q[68],q[9]; +cu1(2.7248972640692436e-18) q[69],q[9]; +cu1(1.3624486320346218e-18) q[70],q[9]; +cu1(6.812243160173109e-19) q[71],q[9]; +cu1(3.4061215800865545e-19) q[72],q[9]; +cu1(1.7030607900432772e-19) q[73],q[9]; +cu1(8.515303950216386e-20) q[74],q[9]; +cu1(4.257651975108193e-20) q[75],q[9]; +cu1(2.1288259875540965e-20) q[76],q[9]; +cu1(1.0644129937770483e-20) q[77],q[9]; +cu1(5.322064968885241e-21) q[78],q[9]; +cu1(2.6610324844426207e-21) q[79],q[9]; +cu1(1.3305162422213103e-21) q[80],q[9]; +cu1(6.652581211106552e-22) q[81],q[9]; +cu1(3.326290605553276e-22) q[82],q[9]; +cu1(1.663145302776638e-22) q[83],q[9]; +cu1(8.31572651388319e-23) q[84],q[9]; +cu1(4.157863256941595e-23) q[85],q[9]; +cu1(2.0789316284707974e-23) q[86],q[9]; +cu1(1.0394658142353987e-23) q[87],q[9]; +cu1(5.1973290711769935e-24) q[88],q[9]; +cu1(2.5986645355884967e-24) q[89],q[9]; +h q[10]; +cu1(1.5707963267948966) q[11],q[10]; +cu1(0.7853981633974483) q[12],q[10]; +cu1(0.39269908169872414) q[13],q[10]; +cu1(0.19634954084936207) q[14],q[10]; +cu1(0.09817477042468103) q[15],q[10]; +cu1(0.04908738521234052) q[16],q[10]; +cu1(0.02454369260617026) q[17],q[10]; +cu1(0.01227184630308513) q[18],q[10]; +cu1(0.006135923151542565) q[19],q[10]; +cu1(0.0030679615757712823) q[20],q[10]; +cu1(0.0015339807878856412) q[21],q[10]; +cu1(0.0007669903939428206) q[22],q[10]; +cu1(0.0003834951969714103) q[23],q[10]; +cu1(0.00019174759848570515) q[24],q[10]; +cu1(9.587379924285257e-05) q[25],q[10]; +cu1(4.7936899621426287e-05) q[26],q[10]; +cu1(2.3968449810713143e-05) q[27],q[10]; +cu1(1.1984224905356572e-05) q[28],q[10]; +cu1(5.992112452678286e-06) q[29],q[10]; +cu1(2.996056226339143e-06) q[30],q[10]; +cu1(1.4980281131695715e-06) q[31],q[10]; +cu1(7.490140565847857e-07) q[32],q[10]; +cu1(3.7450702829239286e-07) q[33],q[10]; +cu1(1.8725351414619643e-07) q[34],q[10]; +cu1(9.362675707309822e-08) q[35],q[10]; +cu1(4.681337853654911e-08) q[36],q[10]; +cu1(2.3406689268274554e-08) q[37],q[10]; +cu1(1.1703344634137277e-08) q[38],q[10]; +cu1(5.8516723170686385e-09) q[39],q[10]; +cu1(2.9258361585343192e-09) q[40],q[10]; +cu1(1.4629180792671596e-09) q[41],q[10]; +cu1(7.314590396335798e-10) q[42],q[10]; +cu1(3.657295198167899e-10) q[43],q[10]; +cu1(1.8286475990839495e-10) q[44],q[10]; +cu1(9.143237995419748e-11) q[45],q[10]; +cu1(4.571618997709874e-11) q[46],q[10]; +cu1(2.285809498854937e-11) q[47],q[10]; +cu1(1.1429047494274685e-11) q[48],q[10]; +cu1(5.714523747137342e-12) q[49],q[10]; +cu1(2.857261873568671e-12) q[50],q[10]; +cu1(1.4286309367843356e-12) q[51],q[10]; +cu1(7.143154683921678e-13) q[52],q[10]; +cu1(3.571577341960839e-13) q[53],q[10]; +cu1(1.7857886709804195e-13) q[54],q[10]; +cu1(8.928943354902097e-14) q[55],q[10]; +cu1(4.4644716774510487e-14) q[56],q[10]; +cu1(2.2322358387255243e-14) q[57],q[10]; +cu1(1.1161179193627622e-14) q[58],q[10]; +cu1(5.580589596813811e-15) q[59],q[10]; +cu1(2.7902947984069054e-15) q[60],q[10]; +cu1(1.3951473992034527e-15) q[61],q[10]; +cu1(6.975736996017264e-16) q[62],q[10]; +cu1(3.487868498008632e-16) q[63],q[10]; +cu1(1.743934249004316e-16) q[64],q[10]; +cu1(8.71967124502158e-17) q[65],q[10]; +cu1(4.35983562251079e-17) q[66],q[10]; +cu1(2.179917811255395e-17) q[67],q[10]; +cu1(1.0899589056276974e-17) q[68],q[10]; +cu1(5.449794528138487e-18) q[69],q[10]; +cu1(2.7248972640692436e-18) q[70],q[10]; +cu1(1.3624486320346218e-18) q[71],q[10]; +cu1(6.812243160173109e-19) q[72],q[10]; +cu1(3.4061215800865545e-19) q[73],q[10]; +cu1(1.7030607900432772e-19) q[74],q[10]; +cu1(8.515303950216386e-20) q[75],q[10]; +cu1(4.257651975108193e-20) q[76],q[10]; +cu1(2.1288259875540965e-20) q[77],q[10]; +cu1(1.0644129937770483e-20) q[78],q[10]; +cu1(5.322064968885241e-21) q[79],q[10]; +cu1(2.6610324844426207e-21) q[80],q[10]; +cu1(1.3305162422213103e-21) q[81],q[10]; +cu1(6.652581211106552e-22) q[82],q[10]; +cu1(3.326290605553276e-22) q[83],q[10]; +cu1(1.663145302776638e-22) q[84],q[10]; +cu1(8.31572651388319e-23) q[85],q[10]; +cu1(4.157863256941595e-23) q[86],q[10]; +cu1(2.0789316284707974e-23) q[87],q[10]; +cu1(1.0394658142353987e-23) q[88],q[10]; +cu1(5.1973290711769935e-24) q[89],q[10]; +h q[11]; +cu1(1.5707963267948966) q[12],q[11]; +cu1(0.7853981633974483) q[13],q[11]; +cu1(0.39269908169872414) q[14],q[11]; +cu1(0.19634954084936207) q[15],q[11]; +cu1(0.09817477042468103) q[16],q[11]; +cu1(0.04908738521234052) q[17],q[11]; +cu1(0.02454369260617026) q[18],q[11]; +cu1(0.01227184630308513) q[19],q[11]; +cu1(0.006135923151542565) q[20],q[11]; +cu1(0.0030679615757712823) q[21],q[11]; +cu1(0.0015339807878856412) q[22],q[11]; +cu1(0.0007669903939428206) q[23],q[11]; +cu1(0.0003834951969714103) q[24],q[11]; +cu1(0.00019174759848570515) q[25],q[11]; +cu1(9.587379924285257e-05) q[26],q[11]; +cu1(4.7936899621426287e-05) q[27],q[11]; +cu1(2.3968449810713143e-05) q[28],q[11]; +cu1(1.1984224905356572e-05) q[29],q[11]; +cu1(5.992112452678286e-06) q[30],q[11]; +cu1(2.996056226339143e-06) q[31],q[11]; +cu1(1.4980281131695715e-06) q[32],q[11]; +cu1(7.490140565847857e-07) q[33],q[11]; +cu1(3.7450702829239286e-07) q[34],q[11]; +cu1(1.8725351414619643e-07) q[35],q[11]; +cu1(9.362675707309822e-08) q[36],q[11]; +cu1(4.681337853654911e-08) q[37],q[11]; +cu1(2.3406689268274554e-08) q[38],q[11]; +cu1(1.1703344634137277e-08) q[39],q[11]; +cu1(5.8516723170686385e-09) q[40],q[11]; +cu1(2.9258361585343192e-09) q[41],q[11]; +cu1(1.4629180792671596e-09) q[42],q[11]; +cu1(7.314590396335798e-10) q[43],q[11]; +cu1(3.657295198167899e-10) q[44],q[11]; +cu1(1.8286475990839495e-10) q[45],q[11]; +cu1(9.143237995419748e-11) q[46],q[11]; +cu1(4.571618997709874e-11) q[47],q[11]; +cu1(2.285809498854937e-11) q[48],q[11]; +cu1(1.1429047494274685e-11) q[49],q[11]; +cu1(5.714523747137342e-12) q[50],q[11]; +cu1(2.857261873568671e-12) q[51],q[11]; +cu1(1.4286309367843356e-12) q[52],q[11]; +cu1(7.143154683921678e-13) q[53],q[11]; +cu1(3.571577341960839e-13) q[54],q[11]; +cu1(1.7857886709804195e-13) q[55],q[11]; +cu1(8.928943354902097e-14) q[56],q[11]; +cu1(4.4644716774510487e-14) q[57],q[11]; +cu1(2.2322358387255243e-14) q[58],q[11]; +cu1(1.1161179193627622e-14) q[59],q[11]; +cu1(5.580589596813811e-15) q[60],q[11]; +cu1(2.7902947984069054e-15) q[61],q[11]; +cu1(1.3951473992034527e-15) q[62],q[11]; +cu1(6.975736996017264e-16) q[63],q[11]; +cu1(3.487868498008632e-16) q[64],q[11]; +cu1(1.743934249004316e-16) q[65],q[11]; +cu1(8.71967124502158e-17) q[66],q[11]; +cu1(4.35983562251079e-17) q[67],q[11]; +cu1(2.179917811255395e-17) q[68],q[11]; +cu1(1.0899589056276974e-17) q[69],q[11]; +cu1(5.449794528138487e-18) q[70],q[11]; +cu1(2.7248972640692436e-18) q[71],q[11]; +cu1(1.3624486320346218e-18) q[72],q[11]; +cu1(6.812243160173109e-19) q[73],q[11]; +cu1(3.4061215800865545e-19) q[74],q[11]; +cu1(1.7030607900432772e-19) q[75],q[11]; +cu1(8.515303950216386e-20) q[76],q[11]; +cu1(4.257651975108193e-20) q[77],q[11]; +cu1(2.1288259875540965e-20) q[78],q[11]; +cu1(1.0644129937770483e-20) q[79],q[11]; +cu1(5.322064968885241e-21) q[80],q[11]; +cu1(2.6610324844426207e-21) q[81],q[11]; +cu1(1.3305162422213103e-21) q[82],q[11]; +cu1(6.652581211106552e-22) q[83],q[11]; +cu1(3.326290605553276e-22) q[84],q[11]; +cu1(1.663145302776638e-22) q[85],q[11]; +cu1(8.31572651388319e-23) q[86],q[11]; +cu1(4.157863256941595e-23) q[87],q[11]; +cu1(2.0789316284707974e-23) q[88],q[11]; +cu1(1.0394658142353987e-23) q[89],q[11]; +h q[12]; +cu1(1.5707963267948966) q[13],q[12]; +cu1(0.7853981633974483) q[14],q[12]; +cu1(0.39269908169872414) q[15],q[12]; +cu1(0.19634954084936207) q[16],q[12]; +cu1(0.09817477042468103) q[17],q[12]; +cu1(0.04908738521234052) q[18],q[12]; +cu1(0.02454369260617026) q[19],q[12]; +cu1(0.01227184630308513) q[20],q[12]; +cu1(0.006135923151542565) q[21],q[12]; +cu1(0.0030679615757712823) q[22],q[12]; +cu1(0.0015339807878856412) q[23],q[12]; +cu1(0.0007669903939428206) q[24],q[12]; +cu1(0.0003834951969714103) q[25],q[12]; +cu1(0.00019174759848570515) q[26],q[12]; +cu1(9.587379924285257e-05) q[27],q[12]; +cu1(4.7936899621426287e-05) q[28],q[12]; +cu1(2.3968449810713143e-05) q[29],q[12]; +cu1(1.1984224905356572e-05) q[30],q[12]; +cu1(5.992112452678286e-06) q[31],q[12]; +cu1(2.996056226339143e-06) q[32],q[12]; +cu1(1.4980281131695715e-06) q[33],q[12]; +cu1(7.490140565847857e-07) q[34],q[12]; +cu1(3.7450702829239286e-07) q[35],q[12]; +cu1(1.8725351414619643e-07) q[36],q[12]; +cu1(9.362675707309822e-08) q[37],q[12]; +cu1(4.681337853654911e-08) q[38],q[12]; +cu1(2.3406689268274554e-08) q[39],q[12]; +cu1(1.1703344634137277e-08) q[40],q[12]; +cu1(5.8516723170686385e-09) q[41],q[12]; +cu1(2.9258361585343192e-09) q[42],q[12]; +cu1(1.4629180792671596e-09) q[43],q[12]; +cu1(7.314590396335798e-10) q[44],q[12]; +cu1(3.657295198167899e-10) q[45],q[12]; +cu1(1.8286475990839495e-10) q[46],q[12]; +cu1(9.143237995419748e-11) q[47],q[12]; +cu1(4.571618997709874e-11) q[48],q[12]; +cu1(2.285809498854937e-11) q[49],q[12]; +cu1(1.1429047494274685e-11) q[50],q[12]; +cu1(5.714523747137342e-12) q[51],q[12]; +cu1(2.857261873568671e-12) q[52],q[12]; +cu1(1.4286309367843356e-12) q[53],q[12]; +cu1(7.143154683921678e-13) q[54],q[12]; +cu1(3.571577341960839e-13) q[55],q[12]; +cu1(1.7857886709804195e-13) q[56],q[12]; +cu1(8.928943354902097e-14) q[57],q[12]; +cu1(4.4644716774510487e-14) q[58],q[12]; +cu1(2.2322358387255243e-14) q[59],q[12]; +cu1(1.1161179193627622e-14) q[60],q[12]; +cu1(5.580589596813811e-15) q[61],q[12]; +cu1(2.7902947984069054e-15) q[62],q[12]; +cu1(1.3951473992034527e-15) q[63],q[12]; +cu1(6.975736996017264e-16) q[64],q[12]; +cu1(3.487868498008632e-16) q[65],q[12]; +cu1(1.743934249004316e-16) q[66],q[12]; +cu1(8.71967124502158e-17) q[67],q[12]; +cu1(4.35983562251079e-17) q[68],q[12]; +cu1(2.179917811255395e-17) q[69],q[12]; +cu1(1.0899589056276974e-17) q[70],q[12]; +cu1(5.449794528138487e-18) q[71],q[12]; +cu1(2.7248972640692436e-18) q[72],q[12]; +cu1(1.3624486320346218e-18) q[73],q[12]; +cu1(6.812243160173109e-19) q[74],q[12]; +cu1(3.4061215800865545e-19) q[75],q[12]; +cu1(1.7030607900432772e-19) q[76],q[12]; +cu1(8.515303950216386e-20) q[77],q[12]; +cu1(4.257651975108193e-20) q[78],q[12]; +cu1(2.1288259875540965e-20) q[79],q[12]; +cu1(1.0644129937770483e-20) q[80],q[12]; +cu1(5.322064968885241e-21) q[81],q[12]; +cu1(2.6610324844426207e-21) q[82],q[12]; +cu1(1.3305162422213103e-21) q[83],q[12]; +cu1(6.652581211106552e-22) q[84],q[12]; +cu1(3.326290605553276e-22) q[85],q[12]; +cu1(1.663145302776638e-22) q[86],q[12]; +cu1(8.31572651388319e-23) q[87],q[12]; +cu1(4.157863256941595e-23) q[88],q[12]; +cu1(2.0789316284707974e-23) q[89],q[12]; +h q[13]; +cu1(1.5707963267948966) q[14],q[13]; +cu1(0.7853981633974483) q[15],q[13]; +cu1(0.39269908169872414) q[16],q[13]; +cu1(0.19634954084936207) q[17],q[13]; +cu1(0.09817477042468103) q[18],q[13]; +cu1(0.04908738521234052) q[19],q[13]; +cu1(0.02454369260617026) q[20],q[13]; +cu1(0.01227184630308513) q[21],q[13]; +cu1(0.006135923151542565) q[22],q[13]; +cu1(0.0030679615757712823) q[23],q[13]; +cu1(0.0015339807878856412) q[24],q[13]; +cu1(0.0007669903939428206) q[25],q[13]; +cu1(0.0003834951969714103) q[26],q[13]; +cu1(0.00019174759848570515) q[27],q[13]; +cu1(9.587379924285257e-05) q[28],q[13]; +cu1(4.7936899621426287e-05) q[29],q[13]; +cu1(2.3968449810713143e-05) q[30],q[13]; +cu1(1.1984224905356572e-05) q[31],q[13]; +cu1(5.992112452678286e-06) q[32],q[13]; +cu1(2.996056226339143e-06) q[33],q[13]; +cu1(1.4980281131695715e-06) q[34],q[13]; +cu1(7.490140565847857e-07) q[35],q[13]; +cu1(3.7450702829239286e-07) q[36],q[13]; +cu1(1.8725351414619643e-07) q[37],q[13]; +cu1(9.362675707309822e-08) q[38],q[13]; +cu1(4.681337853654911e-08) q[39],q[13]; +cu1(2.3406689268274554e-08) q[40],q[13]; +cu1(1.1703344634137277e-08) q[41],q[13]; +cu1(5.8516723170686385e-09) q[42],q[13]; +cu1(2.9258361585343192e-09) q[43],q[13]; +cu1(1.4629180792671596e-09) q[44],q[13]; +cu1(7.314590396335798e-10) q[45],q[13]; +cu1(3.657295198167899e-10) q[46],q[13]; +cu1(1.8286475990839495e-10) q[47],q[13]; +cu1(9.143237995419748e-11) q[48],q[13]; +cu1(4.571618997709874e-11) q[49],q[13]; +cu1(2.285809498854937e-11) q[50],q[13]; +cu1(1.1429047494274685e-11) q[51],q[13]; +cu1(5.714523747137342e-12) q[52],q[13]; +cu1(2.857261873568671e-12) q[53],q[13]; +cu1(1.4286309367843356e-12) q[54],q[13]; +cu1(7.143154683921678e-13) q[55],q[13]; +cu1(3.571577341960839e-13) q[56],q[13]; +cu1(1.7857886709804195e-13) q[57],q[13]; +cu1(8.928943354902097e-14) q[58],q[13]; +cu1(4.4644716774510487e-14) q[59],q[13]; +cu1(2.2322358387255243e-14) q[60],q[13]; +cu1(1.1161179193627622e-14) q[61],q[13]; +cu1(5.580589596813811e-15) q[62],q[13]; +cu1(2.7902947984069054e-15) q[63],q[13]; +cu1(1.3951473992034527e-15) q[64],q[13]; +cu1(6.975736996017264e-16) q[65],q[13]; +cu1(3.487868498008632e-16) q[66],q[13]; +cu1(1.743934249004316e-16) q[67],q[13]; +cu1(8.71967124502158e-17) q[68],q[13]; +cu1(4.35983562251079e-17) q[69],q[13]; +cu1(2.179917811255395e-17) q[70],q[13]; +cu1(1.0899589056276974e-17) q[71],q[13]; +cu1(5.449794528138487e-18) q[72],q[13]; +cu1(2.7248972640692436e-18) q[73],q[13]; +cu1(1.3624486320346218e-18) q[74],q[13]; +cu1(6.812243160173109e-19) q[75],q[13]; +cu1(3.4061215800865545e-19) q[76],q[13]; +cu1(1.7030607900432772e-19) q[77],q[13]; +cu1(8.515303950216386e-20) q[78],q[13]; +cu1(4.257651975108193e-20) q[79],q[13]; +cu1(2.1288259875540965e-20) q[80],q[13]; +cu1(1.0644129937770483e-20) q[81],q[13]; +cu1(5.322064968885241e-21) q[82],q[13]; +cu1(2.6610324844426207e-21) q[83],q[13]; +cu1(1.3305162422213103e-21) q[84],q[13]; +cu1(6.652581211106552e-22) q[85],q[13]; +cu1(3.326290605553276e-22) q[86],q[13]; +cu1(1.663145302776638e-22) q[87],q[13]; +cu1(8.31572651388319e-23) q[88],q[13]; +cu1(4.157863256941595e-23) q[89],q[13]; +h q[14]; +cu1(1.5707963267948966) q[15],q[14]; +cu1(0.7853981633974483) q[16],q[14]; +cu1(0.39269908169872414) q[17],q[14]; +cu1(0.19634954084936207) q[18],q[14]; +cu1(0.09817477042468103) q[19],q[14]; +cu1(0.04908738521234052) q[20],q[14]; +cu1(0.02454369260617026) q[21],q[14]; +cu1(0.01227184630308513) q[22],q[14]; +cu1(0.006135923151542565) q[23],q[14]; +cu1(0.0030679615757712823) q[24],q[14]; +cu1(0.0015339807878856412) q[25],q[14]; +cu1(0.0007669903939428206) q[26],q[14]; +cu1(0.0003834951969714103) q[27],q[14]; +cu1(0.00019174759848570515) q[28],q[14]; +cu1(9.587379924285257e-05) q[29],q[14]; +cu1(4.7936899621426287e-05) q[30],q[14]; +cu1(2.3968449810713143e-05) q[31],q[14]; +cu1(1.1984224905356572e-05) q[32],q[14]; +cu1(5.992112452678286e-06) q[33],q[14]; +cu1(2.996056226339143e-06) q[34],q[14]; +cu1(1.4980281131695715e-06) q[35],q[14]; +cu1(7.490140565847857e-07) q[36],q[14]; +cu1(3.7450702829239286e-07) q[37],q[14]; +cu1(1.8725351414619643e-07) q[38],q[14]; +cu1(9.362675707309822e-08) q[39],q[14]; +cu1(4.681337853654911e-08) q[40],q[14]; +cu1(2.3406689268274554e-08) q[41],q[14]; +cu1(1.1703344634137277e-08) q[42],q[14]; +cu1(5.8516723170686385e-09) q[43],q[14]; +cu1(2.9258361585343192e-09) q[44],q[14]; +cu1(1.4629180792671596e-09) q[45],q[14]; +cu1(7.314590396335798e-10) q[46],q[14]; +cu1(3.657295198167899e-10) q[47],q[14]; +cu1(1.8286475990839495e-10) q[48],q[14]; +cu1(9.143237995419748e-11) q[49],q[14]; +cu1(4.571618997709874e-11) q[50],q[14]; +cu1(2.285809498854937e-11) q[51],q[14]; +cu1(1.1429047494274685e-11) q[52],q[14]; +cu1(5.714523747137342e-12) q[53],q[14]; +cu1(2.857261873568671e-12) q[54],q[14]; +cu1(1.4286309367843356e-12) q[55],q[14]; +cu1(7.143154683921678e-13) q[56],q[14]; +cu1(3.571577341960839e-13) q[57],q[14]; +cu1(1.7857886709804195e-13) q[58],q[14]; +cu1(8.928943354902097e-14) q[59],q[14]; +cu1(4.4644716774510487e-14) q[60],q[14]; +cu1(2.2322358387255243e-14) q[61],q[14]; +cu1(1.1161179193627622e-14) q[62],q[14]; +cu1(5.580589596813811e-15) q[63],q[14]; +cu1(2.7902947984069054e-15) q[64],q[14]; +cu1(1.3951473992034527e-15) q[65],q[14]; +cu1(6.975736996017264e-16) q[66],q[14]; +cu1(3.487868498008632e-16) q[67],q[14]; +cu1(1.743934249004316e-16) q[68],q[14]; +cu1(8.71967124502158e-17) q[69],q[14]; +cu1(4.35983562251079e-17) q[70],q[14]; +cu1(2.179917811255395e-17) q[71],q[14]; +cu1(1.0899589056276974e-17) q[72],q[14]; +cu1(5.449794528138487e-18) q[73],q[14]; +cu1(2.7248972640692436e-18) q[74],q[14]; +cu1(1.3624486320346218e-18) q[75],q[14]; +cu1(6.812243160173109e-19) q[76],q[14]; +cu1(3.4061215800865545e-19) q[77],q[14]; +cu1(1.7030607900432772e-19) q[78],q[14]; +cu1(8.515303950216386e-20) q[79],q[14]; +cu1(4.257651975108193e-20) q[80],q[14]; +cu1(2.1288259875540965e-20) q[81],q[14]; +cu1(1.0644129937770483e-20) q[82],q[14]; +cu1(5.322064968885241e-21) q[83],q[14]; +cu1(2.6610324844426207e-21) q[84],q[14]; +cu1(1.3305162422213103e-21) q[85],q[14]; +cu1(6.652581211106552e-22) q[86],q[14]; +cu1(3.326290605553276e-22) q[87],q[14]; +cu1(1.663145302776638e-22) q[88],q[14]; +cu1(8.31572651388319e-23) q[89],q[14]; +h q[15]; +cu1(1.5707963267948966) q[16],q[15]; +cu1(0.7853981633974483) q[17],q[15]; +cu1(0.39269908169872414) q[18],q[15]; +cu1(0.19634954084936207) q[19],q[15]; +cu1(0.09817477042468103) q[20],q[15]; +cu1(0.04908738521234052) q[21],q[15]; +cu1(0.02454369260617026) q[22],q[15]; +cu1(0.01227184630308513) q[23],q[15]; +cu1(0.006135923151542565) q[24],q[15]; +cu1(0.0030679615757712823) q[25],q[15]; +cu1(0.0015339807878856412) q[26],q[15]; +cu1(0.0007669903939428206) q[27],q[15]; +cu1(0.0003834951969714103) q[28],q[15]; +cu1(0.00019174759848570515) q[29],q[15]; +cu1(9.587379924285257e-05) q[30],q[15]; +cu1(4.7936899621426287e-05) q[31],q[15]; +cu1(2.3968449810713143e-05) q[32],q[15]; +cu1(1.1984224905356572e-05) q[33],q[15]; +cu1(5.992112452678286e-06) q[34],q[15]; +cu1(2.996056226339143e-06) q[35],q[15]; +cu1(1.4980281131695715e-06) q[36],q[15]; +cu1(7.490140565847857e-07) q[37],q[15]; +cu1(3.7450702829239286e-07) q[38],q[15]; +cu1(1.8725351414619643e-07) q[39],q[15]; +cu1(9.362675707309822e-08) q[40],q[15]; +cu1(4.681337853654911e-08) q[41],q[15]; +cu1(2.3406689268274554e-08) q[42],q[15]; +cu1(1.1703344634137277e-08) q[43],q[15]; +cu1(5.8516723170686385e-09) q[44],q[15]; +cu1(2.9258361585343192e-09) q[45],q[15]; +cu1(1.4629180792671596e-09) q[46],q[15]; +cu1(7.314590396335798e-10) q[47],q[15]; +cu1(3.657295198167899e-10) q[48],q[15]; +cu1(1.8286475990839495e-10) q[49],q[15]; +cu1(9.143237995419748e-11) q[50],q[15]; +cu1(4.571618997709874e-11) q[51],q[15]; +cu1(2.285809498854937e-11) q[52],q[15]; +cu1(1.1429047494274685e-11) q[53],q[15]; +cu1(5.714523747137342e-12) q[54],q[15]; +cu1(2.857261873568671e-12) q[55],q[15]; +cu1(1.4286309367843356e-12) q[56],q[15]; +cu1(7.143154683921678e-13) q[57],q[15]; +cu1(3.571577341960839e-13) q[58],q[15]; +cu1(1.7857886709804195e-13) q[59],q[15]; +cu1(8.928943354902097e-14) q[60],q[15]; +cu1(4.4644716774510487e-14) q[61],q[15]; +cu1(2.2322358387255243e-14) q[62],q[15]; +cu1(1.1161179193627622e-14) q[63],q[15]; +cu1(5.580589596813811e-15) q[64],q[15]; +cu1(2.7902947984069054e-15) q[65],q[15]; +cu1(1.3951473992034527e-15) q[66],q[15]; +cu1(6.975736996017264e-16) q[67],q[15]; +cu1(3.487868498008632e-16) q[68],q[15]; +cu1(1.743934249004316e-16) q[69],q[15]; +cu1(8.71967124502158e-17) q[70],q[15]; +cu1(4.35983562251079e-17) q[71],q[15]; +cu1(2.179917811255395e-17) q[72],q[15]; +cu1(1.0899589056276974e-17) q[73],q[15]; +cu1(5.449794528138487e-18) q[74],q[15]; +cu1(2.7248972640692436e-18) q[75],q[15]; +cu1(1.3624486320346218e-18) q[76],q[15]; +cu1(6.812243160173109e-19) q[77],q[15]; +cu1(3.4061215800865545e-19) q[78],q[15]; +cu1(1.7030607900432772e-19) q[79],q[15]; +cu1(8.515303950216386e-20) q[80],q[15]; +cu1(4.257651975108193e-20) q[81],q[15]; +cu1(2.1288259875540965e-20) q[82],q[15]; +cu1(1.0644129937770483e-20) q[83],q[15]; +cu1(5.322064968885241e-21) q[84],q[15]; +cu1(2.6610324844426207e-21) q[85],q[15]; +cu1(1.3305162422213103e-21) q[86],q[15]; +cu1(6.652581211106552e-22) q[87],q[15]; +cu1(3.326290605553276e-22) q[88],q[15]; +cu1(1.663145302776638e-22) q[89],q[15]; +h q[16]; +cu1(1.5707963267948966) q[17],q[16]; +cu1(0.7853981633974483) q[18],q[16]; +cu1(0.39269908169872414) q[19],q[16]; +cu1(0.19634954084936207) q[20],q[16]; +cu1(0.09817477042468103) q[21],q[16]; +cu1(0.04908738521234052) q[22],q[16]; +cu1(0.02454369260617026) q[23],q[16]; +cu1(0.01227184630308513) q[24],q[16]; +cu1(0.006135923151542565) q[25],q[16]; +cu1(0.0030679615757712823) q[26],q[16]; +cu1(0.0015339807878856412) q[27],q[16]; +cu1(0.0007669903939428206) q[28],q[16]; +cu1(0.0003834951969714103) q[29],q[16]; +cu1(0.00019174759848570515) q[30],q[16]; +cu1(9.587379924285257e-05) q[31],q[16]; +cu1(4.7936899621426287e-05) q[32],q[16]; +cu1(2.3968449810713143e-05) q[33],q[16]; +cu1(1.1984224905356572e-05) q[34],q[16]; +cu1(5.992112452678286e-06) q[35],q[16]; +cu1(2.996056226339143e-06) q[36],q[16]; +cu1(1.4980281131695715e-06) q[37],q[16]; +cu1(7.490140565847857e-07) q[38],q[16]; +cu1(3.7450702829239286e-07) q[39],q[16]; +cu1(1.8725351414619643e-07) q[40],q[16]; +cu1(9.362675707309822e-08) q[41],q[16]; +cu1(4.681337853654911e-08) q[42],q[16]; +cu1(2.3406689268274554e-08) q[43],q[16]; +cu1(1.1703344634137277e-08) q[44],q[16]; +cu1(5.8516723170686385e-09) q[45],q[16]; +cu1(2.9258361585343192e-09) q[46],q[16]; +cu1(1.4629180792671596e-09) q[47],q[16]; +cu1(7.314590396335798e-10) q[48],q[16]; +cu1(3.657295198167899e-10) q[49],q[16]; +cu1(1.8286475990839495e-10) q[50],q[16]; +cu1(9.143237995419748e-11) q[51],q[16]; +cu1(4.571618997709874e-11) q[52],q[16]; +cu1(2.285809498854937e-11) q[53],q[16]; +cu1(1.1429047494274685e-11) q[54],q[16]; +cu1(5.714523747137342e-12) q[55],q[16]; +cu1(2.857261873568671e-12) q[56],q[16]; +cu1(1.4286309367843356e-12) q[57],q[16]; +cu1(7.143154683921678e-13) q[58],q[16]; +cu1(3.571577341960839e-13) q[59],q[16]; +cu1(1.7857886709804195e-13) q[60],q[16]; +cu1(8.928943354902097e-14) q[61],q[16]; +cu1(4.4644716774510487e-14) q[62],q[16]; +cu1(2.2322358387255243e-14) q[63],q[16]; +cu1(1.1161179193627622e-14) q[64],q[16]; +cu1(5.580589596813811e-15) q[65],q[16]; +cu1(2.7902947984069054e-15) q[66],q[16]; +cu1(1.3951473992034527e-15) q[67],q[16]; +cu1(6.975736996017264e-16) q[68],q[16]; +cu1(3.487868498008632e-16) q[69],q[16]; +cu1(1.743934249004316e-16) q[70],q[16]; +cu1(8.71967124502158e-17) q[71],q[16]; +cu1(4.35983562251079e-17) q[72],q[16]; +cu1(2.179917811255395e-17) q[73],q[16]; +cu1(1.0899589056276974e-17) q[74],q[16]; +cu1(5.449794528138487e-18) q[75],q[16]; +cu1(2.7248972640692436e-18) q[76],q[16]; +cu1(1.3624486320346218e-18) q[77],q[16]; +cu1(6.812243160173109e-19) q[78],q[16]; +cu1(3.4061215800865545e-19) q[79],q[16]; +cu1(1.7030607900432772e-19) q[80],q[16]; +cu1(8.515303950216386e-20) q[81],q[16]; +cu1(4.257651975108193e-20) q[82],q[16]; +cu1(2.1288259875540965e-20) q[83],q[16]; +cu1(1.0644129937770483e-20) q[84],q[16]; +cu1(5.322064968885241e-21) q[85],q[16]; +cu1(2.6610324844426207e-21) q[86],q[16]; +cu1(1.3305162422213103e-21) q[87],q[16]; +cu1(6.652581211106552e-22) q[88],q[16]; +cu1(3.326290605553276e-22) q[89],q[16]; +h q[17]; +cu1(1.5707963267948966) q[18],q[17]; +cu1(0.7853981633974483) q[19],q[17]; +cu1(0.39269908169872414) q[20],q[17]; +cu1(0.19634954084936207) q[21],q[17]; +cu1(0.09817477042468103) q[22],q[17]; +cu1(0.04908738521234052) q[23],q[17]; +cu1(0.02454369260617026) q[24],q[17]; +cu1(0.01227184630308513) q[25],q[17]; +cu1(0.006135923151542565) q[26],q[17]; +cu1(0.0030679615757712823) q[27],q[17]; +cu1(0.0015339807878856412) q[28],q[17]; +cu1(0.0007669903939428206) q[29],q[17]; +cu1(0.0003834951969714103) q[30],q[17]; +cu1(0.00019174759848570515) q[31],q[17]; +cu1(9.587379924285257e-05) q[32],q[17]; +cu1(4.7936899621426287e-05) q[33],q[17]; +cu1(2.3968449810713143e-05) q[34],q[17]; +cu1(1.1984224905356572e-05) q[35],q[17]; +cu1(5.992112452678286e-06) q[36],q[17]; +cu1(2.996056226339143e-06) q[37],q[17]; +cu1(1.4980281131695715e-06) q[38],q[17]; +cu1(7.490140565847857e-07) q[39],q[17]; +cu1(3.7450702829239286e-07) q[40],q[17]; +cu1(1.8725351414619643e-07) q[41],q[17]; +cu1(9.362675707309822e-08) q[42],q[17]; +cu1(4.681337853654911e-08) q[43],q[17]; +cu1(2.3406689268274554e-08) q[44],q[17]; +cu1(1.1703344634137277e-08) q[45],q[17]; +cu1(5.8516723170686385e-09) q[46],q[17]; +cu1(2.9258361585343192e-09) q[47],q[17]; +cu1(1.4629180792671596e-09) q[48],q[17]; +cu1(7.314590396335798e-10) q[49],q[17]; +cu1(3.657295198167899e-10) q[50],q[17]; +cu1(1.8286475990839495e-10) q[51],q[17]; +cu1(9.143237995419748e-11) q[52],q[17]; +cu1(4.571618997709874e-11) q[53],q[17]; +cu1(2.285809498854937e-11) q[54],q[17]; +cu1(1.1429047494274685e-11) q[55],q[17]; +cu1(5.714523747137342e-12) q[56],q[17]; +cu1(2.857261873568671e-12) q[57],q[17]; +cu1(1.4286309367843356e-12) q[58],q[17]; +cu1(7.143154683921678e-13) q[59],q[17]; +cu1(3.571577341960839e-13) q[60],q[17]; +cu1(1.7857886709804195e-13) q[61],q[17]; +cu1(8.928943354902097e-14) q[62],q[17]; +cu1(4.4644716774510487e-14) q[63],q[17]; +cu1(2.2322358387255243e-14) q[64],q[17]; +cu1(1.1161179193627622e-14) q[65],q[17]; +cu1(5.580589596813811e-15) q[66],q[17]; +cu1(2.7902947984069054e-15) q[67],q[17]; +cu1(1.3951473992034527e-15) q[68],q[17]; +cu1(6.975736996017264e-16) q[69],q[17]; +cu1(3.487868498008632e-16) q[70],q[17]; +cu1(1.743934249004316e-16) q[71],q[17]; +cu1(8.71967124502158e-17) q[72],q[17]; +cu1(4.35983562251079e-17) q[73],q[17]; +cu1(2.179917811255395e-17) q[74],q[17]; +cu1(1.0899589056276974e-17) q[75],q[17]; +cu1(5.449794528138487e-18) q[76],q[17]; +cu1(2.7248972640692436e-18) q[77],q[17]; +cu1(1.3624486320346218e-18) q[78],q[17]; +cu1(6.812243160173109e-19) q[79],q[17]; +cu1(3.4061215800865545e-19) q[80],q[17]; +cu1(1.7030607900432772e-19) q[81],q[17]; +cu1(8.515303950216386e-20) q[82],q[17]; +cu1(4.257651975108193e-20) q[83],q[17]; +cu1(2.1288259875540965e-20) q[84],q[17]; +cu1(1.0644129937770483e-20) q[85],q[17]; +cu1(5.322064968885241e-21) q[86],q[17]; +cu1(2.6610324844426207e-21) q[87],q[17]; +cu1(1.3305162422213103e-21) q[88],q[17]; +cu1(6.652581211106552e-22) q[89],q[17]; +h q[18]; +cu1(1.5707963267948966) q[19],q[18]; +cu1(0.7853981633974483) q[20],q[18]; +cu1(0.39269908169872414) q[21],q[18]; +cu1(0.19634954084936207) q[22],q[18]; +cu1(0.09817477042468103) q[23],q[18]; +cu1(0.04908738521234052) q[24],q[18]; +cu1(0.02454369260617026) q[25],q[18]; +cu1(0.01227184630308513) q[26],q[18]; +cu1(0.006135923151542565) q[27],q[18]; +cu1(0.0030679615757712823) q[28],q[18]; +cu1(0.0015339807878856412) q[29],q[18]; +cu1(0.0007669903939428206) q[30],q[18]; +cu1(0.0003834951969714103) q[31],q[18]; +cu1(0.00019174759848570515) q[32],q[18]; +cu1(9.587379924285257e-05) q[33],q[18]; +cu1(4.7936899621426287e-05) q[34],q[18]; +cu1(2.3968449810713143e-05) q[35],q[18]; +cu1(1.1984224905356572e-05) q[36],q[18]; +cu1(5.992112452678286e-06) q[37],q[18]; +cu1(2.996056226339143e-06) q[38],q[18]; +cu1(1.4980281131695715e-06) q[39],q[18]; +cu1(7.490140565847857e-07) q[40],q[18]; +cu1(3.7450702829239286e-07) q[41],q[18]; +cu1(1.8725351414619643e-07) q[42],q[18]; +cu1(9.362675707309822e-08) q[43],q[18]; +cu1(4.681337853654911e-08) q[44],q[18]; +cu1(2.3406689268274554e-08) q[45],q[18]; +cu1(1.1703344634137277e-08) q[46],q[18]; +cu1(5.8516723170686385e-09) q[47],q[18]; +cu1(2.9258361585343192e-09) q[48],q[18]; +cu1(1.4629180792671596e-09) q[49],q[18]; +cu1(7.314590396335798e-10) q[50],q[18]; +cu1(3.657295198167899e-10) q[51],q[18]; +cu1(1.8286475990839495e-10) q[52],q[18]; +cu1(9.143237995419748e-11) q[53],q[18]; +cu1(4.571618997709874e-11) q[54],q[18]; +cu1(2.285809498854937e-11) q[55],q[18]; +cu1(1.1429047494274685e-11) q[56],q[18]; +cu1(5.714523747137342e-12) q[57],q[18]; +cu1(2.857261873568671e-12) q[58],q[18]; +cu1(1.4286309367843356e-12) q[59],q[18]; +cu1(7.143154683921678e-13) q[60],q[18]; +cu1(3.571577341960839e-13) q[61],q[18]; +cu1(1.7857886709804195e-13) q[62],q[18]; +cu1(8.928943354902097e-14) q[63],q[18]; +cu1(4.4644716774510487e-14) q[64],q[18]; +cu1(2.2322358387255243e-14) q[65],q[18]; +cu1(1.1161179193627622e-14) q[66],q[18]; +cu1(5.580589596813811e-15) q[67],q[18]; +cu1(2.7902947984069054e-15) q[68],q[18]; +cu1(1.3951473992034527e-15) q[69],q[18]; +cu1(6.975736996017264e-16) q[70],q[18]; +cu1(3.487868498008632e-16) q[71],q[18]; +cu1(1.743934249004316e-16) q[72],q[18]; +cu1(8.71967124502158e-17) q[73],q[18]; +cu1(4.35983562251079e-17) q[74],q[18]; +cu1(2.179917811255395e-17) q[75],q[18]; +cu1(1.0899589056276974e-17) q[76],q[18]; +cu1(5.449794528138487e-18) q[77],q[18]; +cu1(2.7248972640692436e-18) q[78],q[18]; +cu1(1.3624486320346218e-18) q[79],q[18]; +cu1(6.812243160173109e-19) q[80],q[18]; +cu1(3.4061215800865545e-19) q[81],q[18]; +cu1(1.7030607900432772e-19) q[82],q[18]; +cu1(8.515303950216386e-20) q[83],q[18]; +cu1(4.257651975108193e-20) q[84],q[18]; +cu1(2.1288259875540965e-20) q[85],q[18]; +cu1(1.0644129937770483e-20) q[86],q[18]; +cu1(5.322064968885241e-21) q[87],q[18]; +cu1(2.6610324844426207e-21) q[88],q[18]; +cu1(1.3305162422213103e-21) q[89],q[18]; +h q[19]; +cu1(1.5707963267948966) q[20],q[19]; +cu1(0.7853981633974483) q[21],q[19]; +cu1(0.39269908169872414) q[22],q[19]; +cu1(0.19634954084936207) q[23],q[19]; +cu1(0.09817477042468103) q[24],q[19]; +cu1(0.04908738521234052) q[25],q[19]; +cu1(0.02454369260617026) q[26],q[19]; +cu1(0.01227184630308513) q[27],q[19]; +cu1(0.006135923151542565) q[28],q[19]; +cu1(0.0030679615757712823) q[29],q[19]; +cu1(0.0015339807878856412) q[30],q[19]; +cu1(0.0007669903939428206) q[31],q[19]; +cu1(0.0003834951969714103) q[32],q[19]; +cu1(0.00019174759848570515) q[33],q[19]; +cu1(9.587379924285257e-05) q[34],q[19]; +cu1(4.7936899621426287e-05) q[35],q[19]; +cu1(2.3968449810713143e-05) q[36],q[19]; +cu1(1.1984224905356572e-05) q[37],q[19]; +cu1(5.992112452678286e-06) q[38],q[19]; +cu1(2.996056226339143e-06) q[39],q[19]; +cu1(1.4980281131695715e-06) q[40],q[19]; +cu1(7.490140565847857e-07) q[41],q[19]; +cu1(3.7450702829239286e-07) q[42],q[19]; +cu1(1.8725351414619643e-07) q[43],q[19]; +cu1(9.362675707309822e-08) q[44],q[19]; +cu1(4.681337853654911e-08) q[45],q[19]; +cu1(2.3406689268274554e-08) q[46],q[19]; +cu1(1.1703344634137277e-08) q[47],q[19]; +cu1(5.8516723170686385e-09) q[48],q[19]; +cu1(2.9258361585343192e-09) q[49],q[19]; +cu1(1.4629180792671596e-09) q[50],q[19]; +cu1(7.314590396335798e-10) q[51],q[19]; +cu1(3.657295198167899e-10) q[52],q[19]; +cu1(1.8286475990839495e-10) q[53],q[19]; +cu1(9.143237995419748e-11) q[54],q[19]; +cu1(4.571618997709874e-11) q[55],q[19]; +cu1(2.285809498854937e-11) q[56],q[19]; +cu1(1.1429047494274685e-11) q[57],q[19]; +cu1(5.714523747137342e-12) q[58],q[19]; +cu1(2.857261873568671e-12) q[59],q[19]; +cu1(1.4286309367843356e-12) q[60],q[19]; +cu1(7.143154683921678e-13) q[61],q[19]; +cu1(3.571577341960839e-13) q[62],q[19]; +cu1(1.7857886709804195e-13) q[63],q[19]; +cu1(8.928943354902097e-14) q[64],q[19]; +cu1(4.4644716774510487e-14) q[65],q[19]; +cu1(2.2322358387255243e-14) q[66],q[19]; +cu1(1.1161179193627622e-14) q[67],q[19]; +cu1(5.580589596813811e-15) q[68],q[19]; +cu1(2.7902947984069054e-15) q[69],q[19]; +cu1(1.3951473992034527e-15) q[70],q[19]; +cu1(6.975736996017264e-16) q[71],q[19]; +cu1(3.487868498008632e-16) q[72],q[19]; +cu1(1.743934249004316e-16) q[73],q[19]; +cu1(8.71967124502158e-17) q[74],q[19]; +cu1(4.35983562251079e-17) q[75],q[19]; +cu1(2.179917811255395e-17) q[76],q[19]; +cu1(1.0899589056276974e-17) q[77],q[19]; +cu1(5.449794528138487e-18) q[78],q[19]; +cu1(2.7248972640692436e-18) q[79],q[19]; +cu1(1.3624486320346218e-18) q[80],q[19]; +cu1(6.812243160173109e-19) q[81],q[19]; +cu1(3.4061215800865545e-19) q[82],q[19]; +cu1(1.7030607900432772e-19) q[83],q[19]; +cu1(8.515303950216386e-20) q[84],q[19]; +cu1(4.257651975108193e-20) q[85],q[19]; +cu1(2.1288259875540965e-20) q[86],q[19]; +cu1(1.0644129937770483e-20) q[87],q[19]; +cu1(5.322064968885241e-21) q[88],q[19]; +cu1(2.6610324844426207e-21) q[89],q[19]; +h q[20]; +cu1(1.5707963267948966) q[21],q[20]; +cu1(0.7853981633974483) q[22],q[20]; +cu1(0.39269908169872414) q[23],q[20]; +cu1(0.19634954084936207) q[24],q[20]; +cu1(0.09817477042468103) q[25],q[20]; +cu1(0.04908738521234052) q[26],q[20]; +cu1(0.02454369260617026) q[27],q[20]; +cu1(0.01227184630308513) q[28],q[20]; +cu1(0.006135923151542565) q[29],q[20]; +cu1(0.0030679615757712823) q[30],q[20]; +cu1(0.0015339807878856412) q[31],q[20]; +cu1(0.0007669903939428206) q[32],q[20]; +cu1(0.0003834951969714103) q[33],q[20]; +cu1(0.00019174759848570515) q[34],q[20]; +cu1(9.587379924285257e-05) q[35],q[20]; +cu1(4.7936899621426287e-05) q[36],q[20]; +cu1(2.3968449810713143e-05) q[37],q[20]; +cu1(1.1984224905356572e-05) q[38],q[20]; +cu1(5.992112452678286e-06) q[39],q[20]; +cu1(2.996056226339143e-06) q[40],q[20]; +cu1(1.4980281131695715e-06) q[41],q[20]; +cu1(7.490140565847857e-07) q[42],q[20]; +cu1(3.7450702829239286e-07) q[43],q[20]; +cu1(1.8725351414619643e-07) q[44],q[20]; +cu1(9.362675707309822e-08) q[45],q[20]; +cu1(4.681337853654911e-08) q[46],q[20]; +cu1(2.3406689268274554e-08) q[47],q[20]; +cu1(1.1703344634137277e-08) q[48],q[20]; +cu1(5.8516723170686385e-09) q[49],q[20]; +cu1(2.9258361585343192e-09) q[50],q[20]; +cu1(1.4629180792671596e-09) q[51],q[20]; +cu1(7.314590396335798e-10) q[52],q[20]; +cu1(3.657295198167899e-10) q[53],q[20]; +cu1(1.8286475990839495e-10) q[54],q[20]; +cu1(9.143237995419748e-11) q[55],q[20]; +cu1(4.571618997709874e-11) q[56],q[20]; +cu1(2.285809498854937e-11) q[57],q[20]; +cu1(1.1429047494274685e-11) q[58],q[20]; +cu1(5.714523747137342e-12) q[59],q[20]; +cu1(2.857261873568671e-12) q[60],q[20]; +cu1(1.4286309367843356e-12) q[61],q[20]; +cu1(7.143154683921678e-13) q[62],q[20]; +cu1(3.571577341960839e-13) q[63],q[20]; +cu1(1.7857886709804195e-13) q[64],q[20]; +cu1(8.928943354902097e-14) q[65],q[20]; +cu1(4.4644716774510487e-14) q[66],q[20]; +cu1(2.2322358387255243e-14) q[67],q[20]; +cu1(1.1161179193627622e-14) q[68],q[20]; +cu1(5.580589596813811e-15) q[69],q[20]; +cu1(2.7902947984069054e-15) q[70],q[20]; +cu1(1.3951473992034527e-15) q[71],q[20]; +cu1(6.975736996017264e-16) q[72],q[20]; +cu1(3.487868498008632e-16) q[73],q[20]; +cu1(1.743934249004316e-16) q[74],q[20]; +cu1(8.71967124502158e-17) q[75],q[20]; +cu1(4.35983562251079e-17) q[76],q[20]; +cu1(2.179917811255395e-17) q[77],q[20]; +cu1(1.0899589056276974e-17) q[78],q[20]; +cu1(5.449794528138487e-18) q[79],q[20]; +cu1(2.7248972640692436e-18) q[80],q[20]; +cu1(1.3624486320346218e-18) q[81],q[20]; +cu1(6.812243160173109e-19) q[82],q[20]; +cu1(3.4061215800865545e-19) q[83],q[20]; +cu1(1.7030607900432772e-19) q[84],q[20]; +cu1(8.515303950216386e-20) q[85],q[20]; +cu1(4.257651975108193e-20) q[86],q[20]; +cu1(2.1288259875540965e-20) q[87],q[20]; +cu1(1.0644129937770483e-20) q[88],q[20]; +cu1(5.322064968885241e-21) q[89],q[20]; +h q[21]; +cu1(1.5707963267948966) q[22],q[21]; +cu1(0.7853981633974483) q[23],q[21]; +cu1(0.39269908169872414) q[24],q[21]; +cu1(0.19634954084936207) q[25],q[21]; +cu1(0.09817477042468103) q[26],q[21]; +cu1(0.04908738521234052) q[27],q[21]; +cu1(0.02454369260617026) q[28],q[21]; +cu1(0.01227184630308513) q[29],q[21]; +cu1(0.006135923151542565) q[30],q[21]; +cu1(0.0030679615757712823) q[31],q[21]; +cu1(0.0015339807878856412) q[32],q[21]; +cu1(0.0007669903939428206) q[33],q[21]; +cu1(0.0003834951969714103) q[34],q[21]; +cu1(0.00019174759848570515) q[35],q[21]; +cu1(9.587379924285257e-05) q[36],q[21]; +cu1(4.7936899621426287e-05) q[37],q[21]; +cu1(2.3968449810713143e-05) q[38],q[21]; +cu1(1.1984224905356572e-05) q[39],q[21]; +cu1(5.992112452678286e-06) q[40],q[21]; +cu1(2.996056226339143e-06) q[41],q[21]; +cu1(1.4980281131695715e-06) q[42],q[21]; +cu1(7.490140565847857e-07) q[43],q[21]; +cu1(3.7450702829239286e-07) q[44],q[21]; +cu1(1.8725351414619643e-07) q[45],q[21]; +cu1(9.362675707309822e-08) q[46],q[21]; +cu1(4.681337853654911e-08) q[47],q[21]; +cu1(2.3406689268274554e-08) q[48],q[21]; +cu1(1.1703344634137277e-08) q[49],q[21]; +cu1(5.8516723170686385e-09) q[50],q[21]; +cu1(2.9258361585343192e-09) q[51],q[21]; +cu1(1.4629180792671596e-09) q[52],q[21]; +cu1(7.314590396335798e-10) q[53],q[21]; +cu1(3.657295198167899e-10) q[54],q[21]; +cu1(1.8286475990839495e-10) q[55],q[21]; +cu1(9.143237995419748e-11) q[56],q[21]; +cu1(4.571618997709874e-11) q[57],q[21]; +cu1(2.285809498854937e-11) q[58],q[21]; +cu1(1.1429047494274685e-11) q[59],q[21]; +cu1(5.714523747137342e-12) q[60],q[21]; +cu1(2.857261873568671e-12) q[61],q[21]; +cu1(1.4286309367843356e-12) q[62],q[21]; +cu1(7.143154683921678e-13) q[63],q[21]; +cu1(3.571577341960839e-13) q[64],q[21]; +cu1(1.7857886709804195e-13) q[65],q[21]; +cu1(8.928943354902097e-14) q[66],q[21]; +cu1(4.4644716774510487e-14) q[67],q[21]; +cu1(2.2322358387255243e-14) q[68],q[21]; +cu1(1.1161179193627622e-14) q[69],q[21]; +cu1(5.580589596813811e-15) q[70],q[21]; +cu1(2.7902947984069054e-15) q[71],q[21]; +cu1(1.3951473992034527e-15) q[72],q[21]; +cu1(6.975736996017264e-16) q[73],q[21]; +cu1(3.487868498008632e-16) q[74],q[21]; +cu1(1.743934249004316e-16) q[75],q[21]; +cu1(8.71967124502158e-17) q[76],q[21]; +cu1(4.35983562251079e-17) q[77],q[21]; +cu1(2.179917811255395e-17) q[78],q[21]; +cu1(1.0899589056276974e-17) q[79],q[21]; +cu1(5.449794528138487e-18) q[80],q[21]; +cu1(2.7248972640692436e-18) q[81],q[21]; +cu1(1.3624486320346218e-18) q[82],q[21]; +cu1(6.812243160173109e-19) q[83],q[21]; +cu1(3.4061215800865545e-19) q[84],q[21]; +cu1(1.7030607900432772e-19) q[85],q[21]; +cu1(8.515303950216386e-20) q[86],q[21]; +cu1(4.257651975108193e-20) q[87],q[21]; +cu1(2.1288259875540965e-20) q[88],q[21]; +cu1(1.0644129937770483e-20) q[89],q[21]; +h q[22]; +cu1(1.5707963267948966) q[23],q[22]; +cu1(0.7853981633974483) q[24],q[22]; +cu1(0.39269908169872414) q[25],q[22]; +cu1(0.19634954084936207) q[26],q[22]; +cu1(0.09817477042468103) q[27],q[22]; +cu1(0.04908738521234052) q[28],q[22]; +cu1(0.02454369260617026) q[29],q[22]; +cu1(0.01227184630308513) q[30],q[22]; +cu1(0.006135923151542565) q[31],q[22]; +cu1(0.0030679615757712823) q[32],q[22]; +cu1(0.0015339807878856412) q[33],q[22]; +cu1(0.0007669903939428206) q[34],q[22]; +cu1(0.0003834951969714103) q[35],q[22]; +cu1(0.00019174759848570515) q[36],q[22]; +cu1(9.587379924285257e-05) q[37],q[22]; +cu1(4.7936899621426287e-05) q[38],q[22]; +cu1(2.3968449810713143e-05) q[39],q[22]; +cu1(1.1984224905356572e-05) q[40],q[22]; +cu1(5.992112452678286e-06) q[41],q[22]; +cu1(2.996056226339143e-06) q[42],q[22]; +cu1(1.4980281131695715e-06) q[43],q[22]; +cu1(7.490140565847857e-07) q[44],q[22]; +cu1(3.7450702829239286e-07) q[45],q[22]; +cu1(1.8725351414619643e-07) q[46],q[22]; +cu1(9.362675707309822e-08) q[47],q[22]; +cu1(4.681337853654911e-08) q[48],q[22]; +cu1(2.3406689268274554e-08) q[49],q[22]; +cu1(1.1703344634137277e-08) q[50],q[22]; +cu1(5.8516723170686385e-09) q[51],q[22]; +cu1(2.9258361585343192e-09) q[52],q[22]; +cu1(1.4629180792671596e-09) q[53],q[22]; +cu1(7.314590396335798e-10) q[54],q[22]; +cu1(3.657295198167899e-10) q[55],q[22]; +cu1(1.8286475990839495e-10) q[56],q[22]; +cu1(9.143237995419748e-11) q[57],q[22]; +cu1(4.571618997709874e-11) q[58],q[22]; +cu1(2.285809498854937e-11) q[59],q[22]; +cu1(1.1429047494274685e-11) q[60],q[22]; +cu1(5.714523747137342e-12) q[61],q[22]; +cu1(2.857261873568671e-12) q[62],q[22]; +cu1(1.4286309367843356e-12) q[63],q[22]; +cu1(7.143154683921678e-13) q[64],q[22]; +cu1(3.571577341960839e-13) q[65],q[22]; +cu1(1.7857886709804195e-13) q[66],q[22]; +cu1(8.928943354902097e-14) q[67],q[22]; +cu1(4.4644716774510487e-14) q[68],q[22]; +cu1(2.2322358387255243e-14) q[69],q[22]; +cu1(1.1161179193627622e-14) q[70],q[22]; +cu1(5.580589596813811e-15) q[71],q[22]; +cu1(2.7902947984069054e-15) q[72],q[22]; +cu1(1.3951473992034527e-15) q[73],q[22]; +cu1(6.975736996017264e-16) q[74],q[22]; +cu1(3.487868498008632e-16) q[75],q[22]; +cu1(1.743934249004316e-16) q[76],q[22]; +cu1(8.71967124502158e-17) q[77],q[22]; +cu1(4.35983562251079e-17) q[78],q[22]; +cu1(2.179917811255395e-17) q[79],q[22]; +cu1(1.0899589056276974e-17) q[80],q[22]; +cu1(5.449794528138487e-18) q[81],q[22]; +cu1(2.7248972640692436e-18) q[82],q[22]; +cu1(1.3624486320346218e-18) q[83],q[22]; +cu1(6.812243160173109e-19) q[84],q[22]; +cu1(3.4061215800865545e-19) q[85],q[22]; +cu1(1.7030607900432772e-19) q[86],q[22]; +cu1(8.515303950216386e-20) q[87],q[22]; +cu1(4.257651975108193e-20) q[88],q[22]; +cu1(2.1288259875540965e-20) q[89],q[22]; +h q[23]; +cu1(1.5707963267948966) q[24],q[23]; +cu1(0.7853981633974483) q[25],q[23]; +cu1(0.39269908169872414) q[26],q[23]; +cu1(0.19634954084936207) q[27],q[23]; +cu1(0.09817477042468103) q[28],q[23]; +cu1(0.04908738521234052) q[29],q[23]; +cu1(0.02454369260617026) q[30],q[23]; +cu1(0.01227184630308513) q[31],q[23]; +cu1(0.006135923151542565) q[32],q[23]; +cu1(0.0030679615757712823) q[33],q[23]; +cu1(0.0015339807878856412) q[34],q[23]; +cu1(0.0007669903939428206) q[35],q[23]; +cu1(0.0003834951969714103) q[36],q[23]; +cu1(0.00019174759848570515) q[37],q[23]; +cu1(9.587379924285257e-05) q[38],q[23]; +cu1(4.7936899621426287e-05) q[39],q[23]; +cu1(2.3968449810713143e-05) q[40],q[23]; +cu1(1.1984224905356572e-05) q[41],q[23]; +cu1(5.992112452678286e-06) q[42],q[23]; +cu1(2.996056226339143e-06) q[43],q[23]; +cu1(1.4980281131695715e-06) q[44],q[23]; +cu1(7.490140565847857e-07) q[45],q[23]; +cu1(3.7450702829239286e-07) q[46],q[23]; +cu1(1.8725351414619643e-07) q[47],q[23]; +cu1(9.362675707309822e-08) q[48],q[23]; +cu1(4.681337853654911e-08) q[49],q[23]; +cu1(2.3406689268274554e-08) q[50],q[23]; +cu1(1.1703344634137277e-08) q[51],q[23]; +cu1(5.8516723170686385e-09) q[52],q[23]; +cu1(2.9258361585343192e-09) q[53],q[23]; +cu1(1.4629180792671596e-09) q[54],q[23]; +cu1(7.314590396335798e-10) q[55],q[23]; +cu1(3.657295198167899e-10) q[56],q[23]; +cu1(1.8286475990839495e-10) q[57],q[23]; +cu1(9.143237995419748e-11) q[58],q[23]; +cu1(4.571618997709874e-11) q[59],q[23]; +cu1(2.285809498854937e-11) q[60],q[23]; +cu1(1.1429047494274685e-11) q[61],q[23]; +cu1(5.714523747137342e-12) q[62],q[23]; +cu1(2.857261873568671e-12) q[63],q[23]; +cu1(1.4286309367843356e-12) q[64],q[23]; +cu1(7.143154683921678e-13) q[65],q[23]; +cu1(3.571577341960839e-13) q[66],q[23]; +cu1(1.7857886709804195e-13) q[67],q[23]; +cu1(8.928943354902097e-14) q[68],q[23]; +cu1(4.4644716774510487e-14) q[69],q[23]; +cu1(2.2322358387255243e-14) q[70],q[23]; +cu1(1.1161179193627622e-14) q[71],q[23]; +cu1(5.580589596813811e-15) q[72],q[23]; +cu1(2.7902947984069054e-15) q[73],q[23]; +cu1(1.3951473992034527e-15) q[74],q[23]; +cu1(6.975736996017264e-16) q[75],q[23]; +cu1(3.487868498008632e-16) q[76],q[23]; +cu1(1.743934249004316e-16) q[77],q[23]; +cu1(8.71967124502158e-17) q[78],q[23]; +cu1(4.35983562251079e-17) q[79],q[23]; +cu1(2.179917811255395e-17) q[80],q[23]; +cu1(1.0899589056276974e-17) q[81],q[23]; +cu1(5.449794528138487e-18) q[82],q[23]; +cu1(2.7248972640692436e-18) q[83],q[23]; +cu1(1.3624486320346218e-18) q[84],q[23]; +cu1(6.812243160173109e-19) q[85],q[23]; +cu1(3.4061215800865545e-19) q[86],q[23]; +cu1(1.7030607900432772e-19) q[87],q[23]; +cu1(8.515303950216386e-20) q[88],q[23]; +cu1(4.257651975108193e-20) q[89],q[23]; +h q[24]; +cu1(1.5707963267948966) q[25],q[24]; +cu1(0.7853981633974483) q[26],q[24]; +cu1(0.39269908169872414) q[27],q[24]; +cu1(0.19634954084936207) q[28],q[24]; +cu1(0.09817477042468103) q[29],q[24]; +cu1(0.04908738521234052) q[30],q[24]; +cu1(0.02454369260617026) q[31],q[24]; +cu1(0.01227184630308513) q[32],q[24]; +cu1(0.006135923151542565) q[33],q[24]; +cu1(0.0030679615757712823) q[34],q[24]; +cu1(0.0015339807878856412) q[35],q[24]; +cu1(0.0007669903939428206) q[36],q[24]; +cu1(0.0003834951969714103) q[37],q[24]; +cu1(0.00019174759848570515) q[38],q[24]; +cu1(9.587379924285257e-05) q[39],q[24]; +cu1(4.7936899621426287e-05) q[40],q[24]; +cu1(2.3968449810713143e-05) q[41],q[24]; +cu1(1.1984224905356572e-05) q[42],q[24]; +cu1(5.992112452678286e-06) q[43],q[24]; +cu1(2.996056226339143e-06) q[44],q[24]; +cu1(1.4980281131695715e-06) q[45],q[24]; +cu1(7.490140565847857e-07) q[46],q[24]; +cu1(3.7450702829239286e-07) q[47],q[24]; +cu1(1.8725351414619643e-07) q[48],q[24]; +cu1(9.362675707309822e-08) q[49],q[24]; +cu1(4.681337853654911e-08) q[50],q[24]; +cu1(2.3406689268274554e-08) q[51],q[24]; +cu1(1.1703344634137277e-08) q[52],q[24]; +cu1(5.8516723170686385e-09) q[53],q[24]; +cu1(2.9258361585343192e-09) q[54],q[24]; +cu1(1.4629180792671596e-09) q[55],q[24]; +cu1(7.314590396335798e-10) q[56],q[24]; +cu1(3.657295198167899e-10) q[57],q[24]; +cu1(1.8286475990839495e-10) q[58],q[24]; +cu1(9.143237995419748e-11) q[59],q[24]; +cu1(4.571618997709874e-11) q[60],q[24]; +cu1(2.285809498854937e-11) q[61],q[24]; +cu1(1.1429047494274685e-11) q[62],q[24]; +cu1(5.714523747137342e-12) q[63],q[24]; +cu1(2.857261873568671e-12) q[64],q[24]; +cu1(1.4286309367843356e-12) q[65],q[24]; +cu1(7.143154683921678e-13) q[66],q[24]; +cu1(3.571577341960839e-13) q[67],q[24]; +cu1(1.7857886709804195e-13) q[68],q[24]; +cu1(8.928943354902097e-14) q[69],q[24]; +cu1(4.4644716774510487e-14) q[70],q[24]; +cu1(2.2322358387255243e-14) q[71],q[24]; +cu1(1.1161179193627622e-14) q[72],q[24]; +cu1(5.580589596813811e-15) q[73],q[24]; +cu1(2.7902947984069054e-15) q[74],q[24]; +cu1(1.3951473992034527e-15) q[75],q[24]; +cu1(6.975736996017264e-16) q[76],q[24]; +cu1(3.487868498008632e-16) q[77],q[24]; +cu1(1.743934249004316e-16) q[78],q[24]; +cu1(8.71967124502158e-17) q[79],q[24]; +cu1(4.35983562251079e-17) q[80],q[24]; +cu1(2.179917811255395e-17) q[81],q[24]; +cu1(1.0899589056276974e-17) q[82],q[24]; +cu1(5.449794528138487e-18) q[83],q[24]; +cu1(2.7248972640692436e-18) q[84],q[24]; +cu1(1.3624486320346218e-18) q[85],q[24]; +cu1(6.812243160173109e-19) q[86],q[24]; +cu1(3.4061215800865545e-19) q[87],q[24]; +cu1(1.7030607900432772e-19) q[88],q[24]; +cu1(8.515303950216386e-20) q[89],q[24]; +h q[25]; +cu1(1.5707963267948966) q[26],q[25]; +cu1(0.7853981633974483) q[27],q[25]; +cu1(0.39269908169872414) q[28],q[25]; +cu1(0.19634954084936207) q[29],q[25]; +cu1(0.09817477042468103) q[30],q[25]; +cu1(0.04908738521234052) q[31],q[25]; +cu1(0.02454369260617026) q[32],q[25]; +cu1(0.01227184630308513) q[33],q[25]; +cu1(0.006135923151542565) q[34],q[25]; +cu1(0.0030679615757712823) q[35],q[25]; +cu1(0.0015339807878856412) q[36],q[25]; +cu1(0.0007669903939428206) q[37],q[25]; +cu1(0.0003834951969714103) q[38],q[25]; +cu1(0.00019174759848570515) q[39],q[25]; +cu1(9.587379924285257e-05) q[40],q[25]; +cu1(4.7936899621426287e-05) q[41],q[25]; +cu1(2.3968449810713143e-05) q[42],q[25]; +cu1(1.1984224905356572e-05) q[43],q[25]; +cu1(5.992112452678286e-06) q[44],q[25]; +cu1(2.996056226339143e-06) q[45],q[25]; +cu1(1.4980281131695715e-06) q[46],q[25]; +cu1(7.490140565847857e-07) q[47],q[25]; +cu1(3.7450702829239286e-07) q[48],q[25]; +cu1(1.8725351414619643e-07) q[49],q[25]; +cu1(9.362675707309822e-08) q[50],q[25]; +cu1(4.681337853654911e-08) q[51],q[25]; +cu1(2.3406689268274554e-08) q[52],q[25]; +cu1(1.1703344634137277e-08) q[53],q[25]; +cu1(5.8516723170686385e-09) q[54],q[25]; +cu1(2.9258361585343192e-09) q[55],q[25]; +cu1(1.4629180792671596e-09) q[56],q[25]; +cu1(7.314590396335798e-10) q[57],q[25]; +cu1(3.657295198167899e-10) q[58],q[25]; +cu1(1.8286475990839495e-10) q[59],q[25]; +cu1(9.143237995419748e-11) q[60],q[25]; +cu1(4.571618997709874e-11) q[61],q[25]; +cu1(2.285809498854937e-11) q[62],q[25]; +cu1(1.1429047494274685e-11) q[63],q[25]; +cu1(5.714523747137342e-12) q[64],q[25]; +cu1(2.857261873568671e-12) q[65],q[25]; +cu1(1.4286309367843356e-12) q[66],q[25]; +cu1(7.143154683921678e-13) q[67],q[25]; +cu1(3.571577341960839e-13) q[68],q[25]; +cu1(1.7857886709804195e-13) q[69],q[25]; +cu1(8.928943354902097e-14) q[70],q[25]; +cu1(4.4644716774510487e-14) q[71],q[25]; +cu1(2.2322358387255243e-14) q[72],q[25]; +cu1(1.1161179193627622e-14) q[73],q[25]; +cu1(5.580589596813811e-15) q[74],q[25]; +cu1(2.7902947984069054e-15) q[75],q[25]; +cu1(1.3951473992034527e-15) q[76],q[25]; +cu1(6.975736996017264e-16) q[77],q[25]; +cu1(3.487868498008632e-16) q[78],q[25]; +cu1(1.743934249004316e-16) q[79],q[25]; +cu1(8.71967124502158e-17) q[80],q[25]; +cu1(4.35983562251079e-17) q[81],q[25]; +cu1(2.179917811255395e-17) q[82],q[25]; +cu1(1.0899589056276974e-17) q[83],q[25]; +cu1(5.449794528138487e-18) q[84],q[25]; +cu1(2.7248972640692436e-18) q[85],q[25]; +cu1(1.3624486320346218e-18) q[86],q[25]; +cu1(6.812243160173109e-19) q[87],q[25]; +cu1(3.4061215800865545e-19) q[88],q[25]; +cu1(1.7030607900432772e-19) q[89],q[25]; +h q[26]; +cu1(1.5707963267948966) q[27],q[26]; +cu1(0.7853981633974483) q[28],q[26]; +cu1(0.39269908169872414) q[29],q[26]; +cu1(0.19634954084936207) q[30],q[26]; +cu1(0.09817477042468103) q[31],q[26]; +cu1(0.04908738521234052) q[32],q[26]; +cu1(0.02454369260617026) q[33],q[26]; +cu1(0.01227184630308513) q[34],q[26]; +cu1(0.006135923151542565) q[35],q[26]; +cu1(0.0030679615757712823) q[36],q[26]; +cu1(0.0015339807878856412) q[37],q[26]; +cu1(0.0007669903939428206) q[38],q[26]; +cu1(0.0003834951969714103) q[39],q[26]; +cu1(0.00019174759848570515) q[40],q[26]; +cu1(9.587379924285257e-05) q[41],q[26]; +cu1(4.7936899621426287e-05) q[42],q[26]; +cu1(2.3968449810713143e-05) q[43],q[26]; +cu1(1.1984224905356572e-05) q[44],q[26]; +cu1(5.992112452678286e-06) q[45],q[26]; +cu1(2.996056226339143e-06) q[46],q[26]; +cu1(1.4980281131695715e-06) q[47],q[26]; +cu1(7.490140565847857e-07) q[48],q[26]; +cu1(3.7450702829239286e-07) q[49],q[26]; +cu1(1.8725351414619643e-07) q[50],q[26]; +cu1(9.362675707309822e-08) q[51],q[26]; +cu1(4.681337853654911e-08) q[52],q[26]; +cu1(2.3406689268274554e-08) q[53],q[26]; +cu1(1.1703344634137277e-08) q[54],q[26]; +cu1(5.8516723170686385e-09) q[55],q[26]; +cu1(2.9258361585343192e-09) q[56],q[26]; +cu1(1.4629180792671596e-09) q[57],q[26]; +cu1(7.314590396335798e-10) q[58],q[26]; +cu1(3.657295198167899e-10) q[59],q[26]; +cu1(1.8286475990839495e-10) q[60],q[26]; +cu1(9.143237995419748e-11) q[61],q[26]; +cu1(4.571618997709874e-11) q[62],q[26]; +cu1(2.285809498854937e-11) q[63],q[26]; +cu1(1.1429047494274685e-11) q[64],q[26]; +cu1(5.714523747137342e-12) q[65],q[26]; +cu1(2.857261873568671e-12) q[66],q[26]; +cu1(1.4286309367843356e-12) q[67],q[26]; +cu1(7.143154683921678e-13) q[68],q[26]; +cu1(3.571577341960839e-13) q[69],q[26]; +cu1(1.7857886709804195e-13) q[70],q[26]; +cu1(8.928943354902097e-14) q[71],q[26]; +cu1(4.4644716774510487e-14) q[72],q[26]; +cu1(2.2322358387255243e-14) q[73],q[26]; +cu1(1.1161179193627622e-14) q[74],q[26]; +cu1(5.580589596813811e-15) q[75],q[26]; +cu1(2.7902947984069054e-15) q[76],q[26]; +cu1(1.3951473992034527e-15) q[77],q[26]; +cu1(6.975736996017264e-16) q[78],q[26]; +cu1(3.487868498008632e-16) q[79],q[26]; +cu1(1.743934249004316e-16) q[80],q[26]; +cu1(8.71967124502158e-17) q[81],q[26]; +cu1(4.35983562251079e-17) q[82],q[26]; +cu1(2.179917811255395e-17) q[83],q[26]; +cu1(1.0899589056276974e-17) q[84],q[26]; +cu1(5.449794528138487e-18) q[85],q[26]; +cu1(2.7248972640692436e-18) q[86],q[26]; +cu1(1.3624486320346218e-18) q[87],q[26]; +cu1(6.812243160173109e-19) q[88],q[26]; +cu1(3.4061215800865545e-19) q[89],q[26]; +h q[27]; +cu1(1.5707963267948966) q[28],q[27]; +cu1(0.7853981633974483) q[29],q[27]; +cu1(0.39269908169872414) q[30],q[27]; +cu1(0.19634954084936207) q[31],q[27]; +cu1(0.09817477042468103) q[32],q[27]; +cu1(0.04908738521234052) q[33],q[27]; +cu1(0.02454369260617026) q[34],q[27]; +cu1(0.01227184630308513) q[35],q[27]; +cu1(0.006135923151542565) q[36],q[27]; +cu1(0.0030679615757712823) q[37],q[27]; +cu1(0.0015339807878856412) q[38],q[27]; +cu1(0.0007669903939428206) q[39],q[27]; +cu1(0.0003834951969714103) q[40],q[27]; +cu1(0.00019174759848570515) q[41],q[27]; +cu1(9.587379924285257e-05) q[42],q[27]; +cu1(4.7936899621426287e-05) q[43],q[27]; +cu1(2.3968449810713143e-05) q[44],q[27]; +cu1(1.1984224905356572e-05) q[45],q[27]; +cu1(5.992112452678286e-06) q[46],q[27]; +cu1(2.996056226339143e-06) q[47],q[27]; +cu1(1.4980281131695715e-06) q[48],q[27]; +cu1(7.490140565847857e-07) q[49],q[27]; +cu1(3.7450702829239286e-07) q[50],q[27]; +cu1(1.8725351414619643e-07) q[51],q[27]; +cu1(9.362675707309822e-08) q[52],q[27]; +cu1(4.681337853654911e-08) q[53],q[27]; +cu1(2.3406689268274554e-08) q[54],q[27]; +cu1(1.1703344634137277e-08) q[55],q[27]; +cu1(5.8516723170686385e-09) q[56],q[27]; +cu1(2.9258361585343192e-09) q[57],q[27]; +cu1(1.4629180792671596e-09) q[58],q[27]; +cu1(7.314590396335798e-10) q[59],q[27]; +cu1(3.657295198167899e-10) q[60],q[27]; +cu1(1.8286475990839495e-10) q[61],q[27]; +cu1(9.143237995419748e-11) q[62],q[27]; +cu1(4.571618997709874e-11) q[63],q[27]; +cu1(2.285809498854937e-11) q[64],q[27]; +cu1(1.1429047494274685e-11) q[65],q[27]; +cu1(5.714523747137342e-12) q[66],q[27]; +cu1(2.857261873568671e-12) q[67],q[27]; +cu1(1.4286309367843356e-12) q[68],q[27]; +cu1(7.143154683921678e-13) q[69],q[27]; +cu1(3.571577341960839e-13) q[70],q[27]; +cu1(1.7857886709804195e-13) q[71],q[27]; +cu1(8.928943354902097e-14) q[72],q[27]; +cu1(4.4644716774510487e-14) q[73],q[27]; +cu1(2.2322358387255243e-14) q[74],q[27]; +cu1(1.1161179193627622e-14) q[75],q[27]; +cu1(5.580589596813811e-15) q[76],q[27]; +cu1(2.7902947984069054e-15) q[77],q[27]; +cu1(1.3951473992034527e-15) q[78],q[27]; +cu1(6.975736996017264e-16) q[79],q[27]; +cu1(3.487868498008632e-16) q[80],q[27]; +cu1(1.743934249004316e-16) q[81],q[27]; +cu1(8.71967124502158e-17) q[82],q[27]; +cu1(4.35983562251079e-17) q[83],q[27]; +cu1(2.179917811255395e-17) q[84],q[27]; +cu1(1.0899589056276974e-17) q[85],q[27]; +cu1(5.449794528138487e-18) q[86],q[27]; +cu1(2.7248972640692436e-18) q[87],q[27]; +cu1(1.3624486320346218e-18) q[88],q[27]; +cu1(6.812243160173109e-19) q[89],q[27]; +h q[28]; +cu1(1.5707963267948966) q[29],q[28]; +cu1(0.7853981633974483) q[30],q[28]; +cu1(0.39269908169872414) q[31],q[28]; +cu1(0.19634954084936207) q[32],q[28]; +cu1(0.09817477042468103) q[33],q[28]; +cu1(0.04908738521234052) q[34],q[28]; +cu1(0.02454369260617026) q[35],q[28]; +cu1(0.01227184630308513) q[36],q[28]; +cu1(0.006135923151542565) q[37],q[28]; +cu1(0.0030679615757712823) q[38],q[28]; +cu1(0.0015339807878856412) q[39],q[28]; +cu1(0.0007669903939428206) q[40],q[28]; +cu1(0.0003834951969714103) q[41],q[28]; +cu1(0.00019174759848570515) q[42],q[28]; +cu1(9.587379924285257e-05) q[43],q[28]; +cu1(4.7936899621426287e-05) q[44],q[28]; +cu1(2.3968449810713143e-05) q[45],q[28]; +cu1(1.1984224905356572e-05) q[46],q[28]; +cu1(5.992112452678286e-06) q[47],q[28]; +cu1(2.996056226339143e-06) q[48],q[28]; +cu1(1.4980281131695715e-06) q[49],q[28]; +cu1(7.490140565847857e-07) q[50],q[28]; +cu1(3.7450702829239286e-07) q[51],q[28]; +cu1(1.8725351414619643e-07) q[52],q[28]; +cu1(9.362675707309822e-08) q[53],q[28]; +cu1(4.681337853654911e-08) q[54],q[28]; +cu1(2.3406689268274554e-08) q[55],q[28]; +cu1(1.1703344634137277e-08) q[56],q[28]; +cu1(5.8516723170686385e-09) q[57],q[28]; +cu1(2.9258361585343192e-09) q[58],q[28]; +cu1(1.4629180792671596e-09) q[59],q[28]; +cu1(7.314590396335798e-10) q[60],q[28]; +cu1(3.657295198167899e-10) q[61],q[28]; +cu1(1.8286475990839495e-10) q[62],q[28]; +cu1(9.143237995419748e-11) q[63],q[28]; +cu1(4.571618997709874e-11) q[64],q[28]; +cu1(2.285809498854937e-11) q[65],q[28]; +cu1(1.1429047494274685e-11) q[66],q[28]; +cu1(5.714523747137342e-12) q[67],q[28]; +cu1(2.857261873568671e-12) q[68],q[28]; +cu1(1.4286309367843356e-12) q[69],q[28]; +cu1(7.143154683921678e-13) q[70],q[28]; +cu1(3.571577341960839e-13) q[71],q[28]; +cu1(1.7857886709804195e-13) q[72],q[28]; +cu1(8.928943354902097e-14) q[73],q[28]; +cu1(4.4644716774510487e-14) q[74],q[28]; +cu1(2.2322358387255243e-14) q[75],q[28]; +cu1(1.1161179193627622e-14) q[76],q[28]; +cu1(5.580589596813811e-15) q[77],q[28]; +cu1(2.7902947984069054e-15) q[78],q[28]; +cu1(1.3951473992034527e-15) q[79],q[28]; +cu1(6.975736996017264e-16) q[80],q[28]; +cu1(3.487868498008632e-16) q[81],q[28]; +cu1(1.743934249004316e-16) q[82],q[28]; +cu1(8.71967124502158e-17) q[83],q[28]; +cu1(4.35983562251079e-17) q[84],q[28]; +cu1(2.179917811255395e-17) q[85],q[28]; +cu1(1.0899589056276974e-17) q[86],q[28]; +cu1(5.449794528138487e-18) q[87],q[28]; +cu1(2.7248972640692436e-18) q[88],q[28]; +cu1(1.3624486320346218e-18) q[89],q[28]; +h q[29]; +cu1(1.5707963267948966) q[30],q[29]; +cu1(0.7853981633974483) q[31],q[29]; +cu1(0.39269908169872414) q[32],q[29]; +cu1(0.19634954084936207) q[33],q[29]; +cu1(0.09817477042468103) q[34],q[29]; +cu1(0.04908738521234052) q[35],q[29]; +cu1(0.02454369260617026) q[36],q[29]; +cu1(0.01227184630308513) q[37],q[29]; +cu1(0.006135923151542565) q[38],q[29]; +cu1(0.0030679615757712823) q[39],q[29]; +cu1(0.0015339807878856412) q[40],q[29]; +cu1(0.0007669903939428206) q[41],q[29]; +cu1(0.0003834951969714103) q[42],q[29]; +cu1(0.00019174759848570515) q[43],q[29]; +cu1(9.587379924285257e-05) q[44],q[29]; +cu1(4.7936899621426287e-05) q[45],q[29]; +cu1(2.3968449810713143e-05) q[46],q[29]; +cu1(1.1984224905356572e-05) q[47],q[29]; +cu1(5.992112452678286e-06) q[48],q[29]; +cu1(2.996056226339143e-06) q[49],q[29]; +cu1(1.4980281131695715e-06) q[50],q[29]; +cu1(7.490140565847857e-07) q[51],q[29]; +cu1(3.7450702829239286e-07) q[52],q[29]; +cu1(1.8725351414619643e-07) q[53],q[29]; +cu1(9.362675707309822e-08) q[54],q[29]; +cu1(4.681337853654911e-08) q[55],q[29]; +cu1(2.3406689268274554e-08) q[56],q[29]; +cu1(1.1703344634137277e-08) q[57],q[29]; +cu1(5.8516723170686385e-09) q[58],q[29]; +cu1(2.9258361585343192e-09) q[59],q[29]; +cu1(1.4629180792671596e-09) q[60],q[29]; +cu1(7.314590396335798e-10) q[61],q[29]; +cu1(3.657295198167899e-10) q[62],q[29]; +cu1(1.8286475990839495e-10) q[63],q[29]; +cu1(9.143237995419748e-11) q[64],q[29]; +cu1(4.571618997709874e-11) q[65],q[29]; +cu1(2.285809498854937e-11) q[66],q[29]; +cu1(1.1429047494274685e-11) q[67],q[29]; +cu1(5.714523747137342e-12) q[68],q[29]; +cu1(2.857261873568671e-12) q[69],q[29]; +cu1(1.4286309367843356e-12) q[70],q[29]; +cu1(7.143154683921678e-13) q[71],q[29]; +cu1(3.571577341960839e-13) q[72],q[29]; +cu1(1.7857886709804195e-13) q[73],q[29]; +cu1(8.928943354902097e-14) q[74],q[29]; +cu1(4.4644716774510487e-14) q[75],q[29]; +cu1(2.2322358387255243e-14) q[76],q[29]; +cu1(1.1161179193627622e-14) q[77],q[29]; +cu1(5.580589596813811e-15) q[78],q[29]; +cu1(2.7902947984069054e-15) q[79],q[29]; +cu1(1.3951473992034527e-15) q[80],q[29]; +cu1(6.975736996017264e-16) q[81],q[29]; +cu1(3.487868498008632e-16) q[82],q[29]; +cu1(1.743934249004316e-16) q[83],q[29]; +cu1(8.71967124502158e-17) q[84],q[29]; +cu1(4.35983562251079e-17) q[85],q[29]; +cu1(2.179917811255395e-17) q[86],q[29]; +cu1(1.0899589056276974e-17) q[87],q[29]; +cu1(5.449794528138487e-18) q[88],q[29]; +cu1(2.7248972640692436e-18) q[89],q[29]; +h q[30]; +cu1(1.5707963267948966) q[31],q[30]; +cu1(0.7853981633974483) q[32],q[30]; +cu1(0.39269908169872414) q[33],q[30]; +cu1(0.19634954084936207) q[34],q[30]; +cu1(0.09817477042468103) q[35],q[30]; +cu1(0.04908738521234052) q[36],q[30]; +cu1(0.02454369260617026) q[37],q[30]; +cu1(0.01227184630308513) q[38],q[30]; +cu1(0.006135923151542565) q[39],q[30]; +cu1(0.0030679615757712823) q[40],q[30]; +cu1(0.0015339807878856412) q[41],q[30]; +cu1(0.0007669903939428206) q[42],q[30]; +cu1(0.0003834951969714103) q[43],q[30]; +cu1(0.00019174759848570515) q[44],q[30]; +cu1(9.587379924285257e-05) q[45],q[30]; +cu1(4.7936899621426287e-05) q[46],q[30]; +cu1(2.3968449810713143e-05) q[47],q[30]; +cu1(1.1984224905356572e-05) q[48],q[30]; +cu1(5.992112452678286e-06) q[49],q[30]; +cu1(2.996056226339143e-06) q[50],q[30]; +cu1(1.4980281131695715e-06) q[51],q[30]; +cu1(7.490140565847857e-07) q[52],q[30]; +cu1(3.7450702829239286e-07) q[53],q[30]; +cu1(1.8725351414619643e-07) q[54],q[30]; +cu1(9.362675707309822e-08) q[55],q[30]; +cu1(4.681337853654911e-08) q[56],q[30]; +cu1(2.3406689268274554e-08) q[57],q[30]; +cu1(1.1703344634137277e-08) q[58],q[30]; +cu1(5.8516723170686385e-09) q[59],q[30]; +cu1(2.9258361585343192e-09) q[60],q[30]; +cu1(1.4629180792671596e-09) q[61],q[30]; +cu1(7.314590396335798e-10) q[62],q[30]; +cu1(3.657295198167899e-10) q[63],q[30]; +cu1(1.8286475990839495e-10) q[64],q[30]; +cu1(9.143237995419748e-11) q[65],q[30]; +cu1(4.571618997709874e-11) q[66],q[30]; +cu1(2.285809498854937e-11) q[67],q[30]; +cu1(1.1429047494274685e-11) q[68],q[30]; +cu1(5.714523747137342e-12) q[69],q[30]; +cu1(2.857261873568671e-12) q[70],q[30]; +cu1(1.4286309367843356e-12) q[71],q[30]; +cu1(7.143154683921678e-13) q[72],q[30]; +cu1(3.571577341960839e-13) q[73],q[30]; +cu1(1.7857886709804195e-13) q[74],q[30]; +cu1(8.928943354902097e-14) q[75],q[30]; +cu1(4.4644716774510487e-14) q[76],q[30]; +cu1(2.2322358387255243e-14) q[77],q[30]; +cu1(1.1161179193627622e-14) q[78],q[30]; +cu1(5.580589596813811e-15) q[79],q[30]; +cu1(2.7902947984069054e-15) q[80],q[30]; +cu1(1.3951473992034527e-15) q[81],q[30]; +cu1(6.975736996017264e-16) q[82],q[30]; +cu1(3.487868498008632e-16) q[83],q[30]; +cu1(1.743934249004316e-16) q[84],q[30]; +cu1(8.71967124502158e-17) q[85],q[30]; +cu1(4.35983562251079e-17) q[86],q[30]; +cu1(2.179917811255395e-17) q[87],q[30]; +cu1(1.0899589056276974e-17) q[88],q[30]; +cu1(5.449794528138487e-18) q[89],q[30]; +h q[31]; +cu1(1.5707963267948966) q[32],q[31]; +cu1(0.7853981633974483) q[33],q[31]; +cu1(0.39269908169872414) q[34],q[31]; +cu1(0.19634954084936207) q[35],q[31]; +cu1(0.09817477042468103) q[36],q[31]; +cu1(0.04908738521234052) q[37],q[31]; +cu1(0.02454369260617026) q[38],q[31]; +cu1(0.01227184630308513) q[39],q[31]; +cu1(0.006135923151542565) q[40],q[31]; +cu1(0.0030679615757712823) q[41],q[31]; +cu1(0.0015339807878856412) q[42],q[31]; +cu1(0.0007669903939428206) q[43],q[31]; +cu1(0.0003834951969714103) q[44],q[31]; +cu1(0.00019174759848570515) q[45],q[31]; +cu1(9.587379924285257e-05) q[46],q[31]; +cu1(4.7936899621426287e-05) q[47],q[31]; +cu1(2.3968449810713143e-05) q[48],q[31]; +cu1(1.1984224905356572e-05) q[49],q[31]; +cu1(5.992112452678286e-06) q[50],q[31]; +cu1(2.996056226339143e-06) q[51],q[31]; +cu1(1.4980281131695715e-06) q[52],q[31]; +cu1(7.490140565847857e-07) q[53],q[31]; +cu1(3.7450702829239286e-07) q[54],q[31]; +cu1(1.8725351414619643e-07) q[55],q[31]; +cu1(9.362675707309822e-08) q[56],q[31]; +cu1(4.681337853654911e-08) q[57],q[31]; +cu1(2.3406689268274554e-08) q[58],q[31]; +cu1(1.1703344634137277e-08) q[59],q[31]; +cu1(5.8516723170686385e-09) q[60],q[31]; +cu1(2.9258361585343192e-09) q[61],q[31]; +cu1(1.4629180792671596e-09) q[62],q[31]; +cu1(7.314590396335798e-10) q[63],q[31]; +cu1(3.657295198167899e-10) q[64],q[31]; +cu1(1.8286475990839495e-10) q[65],q[31]; +cu1(9.143237995419748e-11) q[66],q[31]; +cu1(4.571618997709874e-11) q[67],q[31]; +cu1(2.285809498854937e-11) q[68],q[31]; +cu1(1.1429047494274685e-11) q[69],q[31]; +cu1(5.714523747137342e-12) q[70],q[31]; +cu1(2.857261873568671e-12) q[71],q[31]; +cu1(1.4286309367843356e-12) q[72],q[31]; +cu1(7.143154683921678e-13) q[73],q[31]; +cu1(3.571577341960839e-13) q[74],q[31]; +cu1(1.7857886709804195e-13) q[75],q[31]; +cu1(8.928943354902097e-14) q[76],q[31]; +cu1(4.4644716774510487e-14) q[77],q[31]; +cu1(2.2322358387255243e-14) q[78],q[31]; +cu1(1.1161179193627622e-14) q[79],q[31]; +cu1(5.580589596813811e-15) q[80],q[31]; +cu1(2.7902947984069054e-15) q[81],q[31]; +cu1(1.3951473992034527e-15) q[82],q[31]; +cu1(6.975736996017264e-16) q[83],q[31]; +cu1(3.487868498008632e-16) q[84],q[31]; +cu1(1.743934249004316e-16) q[85],q[31]; +cu1(8.71967124502158e-17) q[86],q[31]; +cu1(4.35983562251079e-17) q[87],q[31]; +cu1(2.179917811255395e-17) q[88],q[31]; +cu1(1.0899589056276974e-17) q[89],q[31]; +h q[32]; +cu1(1.5707963267948966) q[33],q[32]; +cu1(0.7853981633974483) q[34],q[32]; +cu1(0.39269908169872414) q[35],q[32]; +cu1(0.19634954084936207) q[36],q[32]; +cu1(0.09817477042468103) q[37],q[32]; +cu1(0.04908738521234052) q[38],q[32]; +cu1(0.02454369260617026) q[39],q[32]; +cu1(0.01227184630308513) q[40],q[32]; +cu1(0.006135923151542565) q[41],q[32]; +cu1(0.0030679615757712823) q[42],q[32]; +cu1(0.0015339807878856412) q[43],q[32]; +cu1(0.0007669903939428206) q[44],q[32]; +cu1(0.0003834951969714103) q[45],q[32]; +cu1(0.00019174759848570515) q[46],q[32]; +cu1(9.587379924285257e-05) q[47],q[32]; +cu1(4.7936899621426287e-05) q[48],q[32]; +cu1(2.3968449810713143e-05) q[49],q[32]; +cu1(1.1984224905356572e-05) q[50],q[32]; +cu1(5.992112452678286e-06) q[51],q[32]; +cu1(2.996056226339143e-06) q[52],q[32]; +cu1(1.4980281131695715e-06) q[53],q[32]; +cu1(7.490140565847857e-07) q[54],q[32]; +cu1(3.7450702829239286e-07) q[55],q[32]; +cu1(1.8725351414619643e-07) q[56],q[32]; +cu1(9.362675707309822e-08) q[57],q[32]; +cu1(4.681337853654911e-08) q[58],q[32]; +cu1(2.3406689268274554e-08) q[59],q[32]; +cu1(1.1703344634137277e-08) q[60],q[32]; +cu1(5.8516723170686385e-09) q[61],q[32]; +cu1(2.9258361585343192e-09) q[62],q[32]; +cu1(1.4629180792671596e-09) q[63],q[32]; +cu1(7.314590396335798e-10) q[64],q[32]; +cu1(3.657295198167899e-10) q[65],q[32]; +cu1(1.8286475990839495e-10) q[66],q[32]; +cu1(9.143237995419748e-11) q[67],q[32]; +cu1(4.571618997709874e-11) q[68],q[32]; +cu1(2.285809498854937e-11) q[69],q[32]; +cu1(1.1429047494274685e-11) q[70],q[32]; +cu1(5.714523747137342e-12) q[71],q[32]; +cu1(2.857261873568671e-12) q[72],q[32]; +cu1(1.4286309367843356e-12) q[73],q[32]; +cu1(7.143154683921678e-13) q[74],q[32]; +cu1(3.571577341960839e-13) q[75],q[32]; +cu1(1.7857886709804195e-13) q[76],q[32]; +cu1(8.928943354902097e-14) q[77],q[32]; +cu1(4.4644716774510487e-14) q[78],q[32]; +cu1(2.2322358387255243e-14) q[79],q[32]; +cu1(1.1161179193627622e-14) q[80],q[32]; +cu1(5.580589596813811e-15) q[81],q[32]; +cu1(2.7902947984069054e-15) q[82],q[32]; +cu1(1.3951473992034527e-15) q[83],q[32]; +cu1(6.975736996017264e-16) q[84],q[32]; +cu1(3.487868498008632e-16) q[85],q[32]; +cu1(1.743934249004316e-16) q[86],q[32]; +cu1(8.71967124502158e-17) q[87],q[32]; +cu1(4.35983562251079e-17) q[88],q[32]; +cu1(2.179917811255395e-17) q[89],q[32]; +h q[33]; +cu1(1.5707963267948966) q[34],q[33]; +cu1(0.7853981633974483) q[35],q[33]; +cu1(0.39269908169872414) q[36],q[33]; +cu1(0.19634954084936207) q[37],q[33]; +cu1(0.09817477042468103) q[38],q[33]; +cu1(0.04908738521234052) q[39],q[33]; +cu1(0.02454369260617026) q[40],q[33]; +cu1(0.01227184630308513) q[41],q[33]; +cu1(0.006135923151542565) q[42],q[33]; +cu1(0.0030679615757712823) q[43],q[33]; +cu1(0.0015339807878856412) q[44],q[33]; +cu1(0.0007669903939428206) q[45],q[33]; +cu1(0.0003834951969714103) q[46],q[33]; +cu1(0.00019174759848570515) q[47],q[33]; +cu1(9.587379924285257e-05) q[48],q[33]; +cu1(4.7936899621426287e-05) q[49],q[33]; +cu1(2.3968449810713143e-05) q[50],q[33]; +cu1(1.1984224905356572e-05) q[51],q[33]; +cu1(5.992112452678286e-06) q[52],q[33]; +cu1(2.996056226339143e-06) q[53],q[33]; +cu1(1.4980281131695715e-06) q[54],q[33]; +cu1(7.490140565847857e-07) q[55],q[33]; +cu1(3.7450702829239286e-07) q[56],q[33]; +cu1(1.8725351414619643e-07) q[57],q[33]; +cu1(9.362675707309822e-08) q[58],q[33]; +cu1(4.681337853654911e-08) q[59],q[33]; +cu1(2.3406689268274554e-08) q[60],q[33]; +cu1(1.1703344634137277e-08) q[61],q[33]; +cu1(5.8516723170686385e-09) q[62],q[33]; +cu1(2.9258361585343192e-09) q[63],q[33]; +cu1(1.4629180792671596e-09) q[64],q[33]; +cu1(7.314590396335798e-10) q[65],q[33]; +cu1(3.657295198167899e-10) q[66],q[33]; +cu1(1.8286475990839495e-10) q[67],q[33]; +cu1(9.143237995419748e-11) q[68],q[33]; +cu1(4.571618997709874e-11) q[69],q[33]; +cu1(2.285809498854937e-11) q[70],q[33]; +cu1(1.1429047494274685e-11) q[71],q[33]; +cu1(5.714523747137342e-12) q[72],q[33]; +cu1(2.857261873568671e-12) q[73],q[33]; +cu1(1.4286309367843356e-12) q[74],q[33]; +cu1(7.143154683921678e-13) q[75],q[33]; +cu1(3.571577341960839e-13) q[76],q[33]; +cu1(1.7857886709804195e-13) q[77],q[33]; +cu1(8.928943354902097e-14) q[78],q[33]; +cu1(4.4644716774510487e-14) q[79],q[33]; +cu1(2.2322358387255243e-14) q[80],q[33]; +cu1(1.1161179193627622e-14) q[81],q[33]; +cu1(5.580589596813811e-15) q[82],q[33]; +cu1(2.7902947984069054e-15) q[83],q[33]; +cu1(1.3951473992034527e-15) q[84],q[33]; +cu1(6.975736996017264e-16) q[85],q[33]; +cu1(3.487868498008632e-16) q[86],q[33]; +cu1(1.743934249004316e-16) q[87],q[33]; +cu1(8.71967124502158e-17) q[88],q[33]; +cu1(4.35983562251079e-17) q[89],q[33]; +h q[34]; +cu1(1.5707963267948966) q[35],q[34]; +cu1(0.7853981633974483) q[36],q[34]; +cu1(0.39269908169872414) q[37],q[34]; +cu1(0.19634954084936207) q[38],q[34]; +cu1(0.09817477042468103) q[39],q[34]; +cu1(0.04908738521234052) q[40],q[34]; +cu1(0.02454369260617026) q[41],q[34]; +cu1(0.01227184630308513) q[42],q[34]; +cu1(0.006135923151542565) q[43],q[34]; +cu1(0.0030679615757712823) q[44],q[34]; +cu1(0.0015339807878856412) q[45],q[34]; +cu1(0.0007669903939428206) q[46],q[34]; +cu1(0.0003834951969714103) q[47],q[34]; +cu1(0.00019174759848570515) q[48],q[34]; +cu1(9.587379924285257e-05) q[49],q[34]; +cu1(4.7936899621426287e-05) q[50],q[34]; +cu1(2.3968449810713143e-05) q[51],q[34]; +cu1(1.1984224905356572e-05) q[52],q[34]; +cu1(5.992112452678286e-06) q[53],q[34]; +cu1(2.996056226339143e-06) q[54],q[34]; +cu1(1.4980281131695715e-06) q[55],q[34]; +cu1(7.490140565847857e-07) q[56],q[34]; +cu1(3.7450702829239286e-07) q[57],q[34]; +cu1(1.8725351414619643e-07) q[58],q[34]; +cu1(9.362675707309822e-08) q[59],q[34]; +cu1(4.681337853654911e-08) q[60],q[34]; +cu1(2.3406689268274554e-08) q[61],q[34]; +cu1(1.1703344634137277e-08) q[62],q[34]; +cu1(5.8516723170686385e-09) q[63],q[34]; +cu1(2.9258361585343192e-09) q[64],q[34]; +cu1(1.4629180792671596e-09) q[65],q[34]; +cu1(7.314590396335798e-10) q[66],q[34]; +cu1(3.657295198167899e-10) q[67],q[34]; +cu1(1.8286475990839495e-10) q[68],q[34]; +cu1(9.143237995419748e-11) q[69],q[34]; +cu1(4.571618997709874e-11) q[70],q[34]; +cu1(2.285809498854937e-11) q[71],q[34]; +cu1(1.1429047494274685e-11) q[72],q[34]; +cu1(5.714523747137342e-12) q[73],q[34]; +cu1(2.857261873568671e-12) q[74],q[34]; +cu1(1.4286309367843356e-12) q[75],q[34]; +cu1(7.143154683921678e-13) q[76],q[34]; +cu1(3.571577341960839e-13) q[77],q[34]; +cu1(1.7857886709804195e-13) q[78],q[34]; +cu1(8.928943354902097e-14) q[79],q[34]; +cu1(4.4644716774510487e-14) q[80],q[34]; +cu1(2.2322358387255243e-14) q[81],q[34]; +cu1(1.1161179193627622e-14) q[82],q[34]; +cu1(5.580589596813811e-15) q[83],q[34]; +cu1(2.7902947984069054e-15) q[84],q[34]; +cu1(1.3951473992034527e-15) q[85],q[34]; +cu1(6.975736996017264e-16) q[86],q[34]; +cu1(3.487868498008632e-16) q[87],q[34]; +cu1(1.743934249004316e-16) q[88],q[34]; +cu1(8.71967124502158e-17) q[89],q[34]; +h q[35]; +cu1(1.5707963267948966) q[36],q[35]; +cu1(0.7853981633974483) q[37],q[35]; +cu1(0.39269908169872414) q[38],q[35]; +cu1(0.19634954084936207) q[39],q[35]; +cu1(0.09817477042468103) q[40],q[35]; +cu1(0.04908738521234052) q[41],q[35]; +cu1(0.02454369260617026) q[42],q[35]; +cu1(0.01227184630308513) q[43],q[35]; +cu1(0.006135923151542565) q[44],q[35]; +cu1(0.0030679615757712823) q[45],q[35]; +cu1(0.0015339807878856412) q[46],q[35]; +cu1(0.0007669903939428206) q[47],q[35]; +cu1(0.0003834951969714103) q[48],q[35]; +cu1(0.00019174759848570515) q[49],q[35]; +cu1(9.587379924285257e-05) q[50],q[35]; +cu1(4.7936899621426287e-05) q[51],q[35]; +cu1(2.3968449810713143e-05) q[52],q[35]; +cu1(1.1984224905356572e-05) q[53],q[35]; +cu1(5.992112452678286e-06) q[54],q[35]; +cu1(2.996056226339143e-06) q[55],q[35]; +cu1(1.4980281131695715e-06) q[56],q[35]; +cu1(7.490140565847857e-07) q[57],q[35]; +cu1(3.7450702829239286e-07) q[58],q[35]; +cu1(1.8725351414619643e-07) q[59],q[35]; +cu1(9.362675707309822e-08) q[60],q[35]; +cu1(4.681337853654911e-08) q[61],q[35]; +cu1(2.3406689268274554e-08) q[62],q[35]; +cu1(1.1703344634137277e-08) q[63],q[35]; +cu1(5.8516723170686385e-09) q[64],q[35]; +cu1(2.9258361585343192e-09) q[65],q[35]; +cu1(1.4629180792671596e-09) q[66],q[35]; +cu1(7.314590396335798e-10) q[67],q[35]; +cu1(3.657295198167899e-10) q[68],q[35]; +cu1(1.8286475990839495e-10) q[69],q[35]; +cu1(9.143237995419748e-11) q[70],q[35]; +cu1(4.571618997709874e-11) q[71],q[35]; +cu1(2.285809498854937e-11) q[72],q[35]; +cu1(1.1429047494274685e-11) q[73],q[35]; +cu1(5.714523747137342e-12) q[74],q[35]; +cu1(2.857261873568671e-12) q[75],q[35]; +cu1(1.4286309367843356e-12) q[76],q[35]; +cu1(7.143154683921678e-13) q[77],q[35]; +cu1(3.571577341960839e-13) q[78],q[35]; +cu1(1.7857886709804195e-13) q[79],q[35]; +cu1(8.928943354902097e-14) q[80],q[35]; +cu1(4.4644716774510487e-14) q[81],q[35]; +cu1(2.2322358387255243e-14) q[82],q[35]; +cu1(1.1161179193627622e-14) q[83],q[35]; +cu1(5.580589596813811e-15) q[84],q[35]; +cu1(2.7902947984069054e-15) q[85],q[35]; +cu1(1.3951473992034527e-15) q[86],q[35]; +cu1(6.975736996017264e-16) q[87],q[35]; +cu1(3.487868498008632e-16) q[88],q[35]; +cu1(1.743934249004316e-16) q[89],q[35]; +h q[36]; +cu1(1.5707963267948966) q[37],q[36]; +cu1(0.7853981633974483) q[38],q[36]; +cu1(0.39269908169872414) q[39],q[36]; +cu1(0.19634954084936207) q[40],q[36]; +cu1(0.09817477042468103) q[41],q[36]; +cu1(0.04908738521234052) q[42],q[36]; +cu1(0.02454369260617026) q[43],q[36]; +cu1(0.01227184630308513) q[44],q[36]; +cu1(0.006135923151542565) q[45],q[36]; +cu1(0.0030679615757712823) q[46],q[36]; +cu1(0.0015339807878856412) q[47],q[36]; +cu1(0.0007669903939428206) q[48],q[36]; +cu1(0.0003834951969714103) q[49],q[36]; +cu1(0.00019174759848570515) q[50],q[36]; +cu1(9.587379924285257e-05) q[51],q[36]; +cu1(4.7936899621426287e-05) q[52],q[36]; +cu1(2.3968449810713143e-05) q[53],q[36]; +cu1(1.1984224905356572e-05) q[54],q[36]; +cu1(5.992112452678286e-06) q[55],q[36]; +cu1(2.996056226339143e-06) q[56],q[36]; +cu1(1.4980281131695715e-06) q[57],q[36]; +cu1(7.490140565847857e-07) q[58],q[36]; +cu1(3.7450702829239286e-07) q[59],q[36]; +cu1(1.8725351414619643e-07) q[60],q[36]; +cu1(9.362675707309822e-08) q[61],q[36]; +cu1(4.681337853654911e-08) q[62],q[36]; +cu1(2.3406689268274554e-08) q[63],q[36]; +cu1(1.1703344634137277e-08) q[64],q[36]; +cu1(5.8516723170686385e-09) q[65],q[36]; +cu1(2.9258361585343192e-09) q[66],q[36]; +cu1(1.4629180792671596e-09) q[67],q[36]; +cu1(7.314590396335798e-10) q[68],q[36]; +cu1(3.657295198167899e-10) q[69],q[36]; +cu1(1.8286475990839495e-10) q[70],q[36]; +cu1(9.143237995419748e-11) q[71],q[36]; +cu1(4.571618997709874e-11) q[72],q[36]; +cu1(2.285809498854937e-11) q[73],q[36]; +cu1(1.1429047494274685e-11) q[74],q[36]; +cu1(5.714523747137342e-12) q[75],q[36]; +cu1(2.857261873568671e-12) q[76],q[36]; +cu1(1.4286309367843356e-12) q[77],q[36]; +cu1(7.143154683921678e-13) q[78],q[36]; +cu1(3.571577341960839e-13) q[79],q[36]; +cu1(1.7857886709804195e-13) q[80],q[36]; +cu1(8.928943354902097e-14) q[81],q[36]; +cu1(4.4644716774510487e-14) q[82],q[36]; +cu1(2.2322358387255243e-14) q[83],q[36]; +cu1(1.1161179193627622e-14) q[84],q[36]; +cu1(5.580589596813811e-15) q[85],q[36]; +cu1(2.7902947984069054e-15) q[86],q[36]; +cu1(1.3951473992034527e-15) q[87],q[36]; +cu1(6.975736996017264e-16) q[88],q[36]; +cu1(3.487868498008632e-16) q[89],q[36]; +h q[37]; +cu1(1.5707963267948966) q[38],q[37]; +cu1(0.7853981633974483) q[39],q[37]; +cu1(0.39269908169872414) q[40],q[37]; +cu1(0.19634954084936207) q[41],q[37]; +cu1(0.09817477042468103) q[42],q[37]; +cu1(0.04908738521234052) q[43],q[37]; +cu1(0.02454369260617026) q[44],q[37]; +cu1(0.01227184630308513) q[45],q[37]; +cu1(0.006135923151542565) q[46],q[37]; +cu1(0.0030679615757712823) q[47],q[37]; +cu1(0.0015339807878856412) q[48],q[37]; +cu1(0.0007669903939428206) q[49],q[37]; +cu1(0.0003834951969714103) q[50],q[37]; +cu1(0.00019174759848570515) q[51],q[37]; +cu1(9.587379924285257e-05) q[52],q[37]; +cu1(4.7936899621426287e-05) q[53],q[37]; +cu1(2.3968449810713143e-05) q[54],q[37]; +cu1(1.1984224905356572e-05) q[55],q[37]; +cu1(5.992112452678286e-06) q[56],q[37]; +cu1(2.996056226339143e-06) q[57],q[37]; +cu1(1.4980281131695715e-06) q[58],q[37]; +cu1(7.490140565847857e-07) q[59],q[37]; +cu1(3.7450702829239286e-07) q[60],q[37]; +cu1(1.8725351414619643e-07) q[61],q[37]; +cu1(9.362675707309822e-08) q[62],q[37]; +cu1(4.681337853654911e-08) q[63],q[37]; +cu1(2.3406689268274554e-08) q[64],q[37]; +cu1(1.1703344634137277e-08) q[65],q[37]; +cu1(5.8516723170686385e-09) q[66],q[37]; +cu1(2.9258361585343192e-09) q[67],q[37]; +cu1(1.4629180792671596e-09) q[68],q[37]; +cu1(7.314590396335798e-10) q[69],q[37]; +cu1(3.657295198167899e-10) q[70],q[37]; +cu1(1.8286475990839495e-10) q[71],q[37]; +cu1(9.143237995419748e-11) q[72],q[37]; +cu1(4.571618997709874e-11) q[73],q[37]; +cu1(2.285809498854937e-11) q[74],q[37]; +cu1(1.1429047494274685e-11) q[75],q[37]; +cu1(5.714523747137342e-12) q[76],q[37]; +cu1(2.857261873568671e-12) q[77],q[37]; +cu1(1.4286309367843356e-12) q[78],q[37]; +cu1(7.143154683921678e-13) q[79],q[37]; +cu1(3.571577341960839e-13) q[80],q[37]; +cu1(1.7857886709804195e-13) q[81],q[37]; +cu1(8.928943354902097e-14) q[82],q[37]; +cu1(4.4644716774510487e-14) q[83],q[37]; +cu1(2.2322358387255243e-14) q[84],q[37]; +cu1(1.1161179193627622e-14) q[85],q[37]; +cu1(5.580589596813811e-15) q[86],q[37]; +cu1(2.7902947984069054e-15) q[87],q[37]; +cu1(1.3951473992034527e-15) q[88],q[37]; +cu1(6.975736996017264e-16) q[89],q[37]; +h q[38]; +cu1(1.5707963267948966) q[39],q[38]; +cu1(0.7853981633974483) q[40],q[38]; +cu1(0.39269908169872414) q[41],q[38]; +cu1(0.19634954084936207) q[42],q[38]; +cu1(0.09817477042468103) q[43],q[38]; +cu1(0.04908738521234052) q[44],q[38]; +cu1(0.02454369260617026) q[45],q[38]; +cu1(0.01227184630308513) q[46],q[38]; +cu1(0.006135923151542565) q[47],q[38]; +cu1(0.0030679615757712823) q[48],q[38]; +cu1(0.0015339807878856412) q[49],q[38]; +cu1(0.0007669903939428206) q[50],q[38]; +cu1(0.0003834951969714103) q[51],q[38]; +cu1(0.00019174759848570515) q[52],q[38]; +cu1(9.587379924285257e-05) q[53],q[38]; +cu1(4.7936899621426287e-05) q[54],q[38]; +cu1(2.3968449810713143e-05) q[55],q[38]; +cu1(1.1984224905356572e-05) q[56],q[38]; +cu1(5.992112452678286e-06) q[57],q[38]; +cu1(2.996056226339143e-06) q[58],q[38]; +cu1(1.4980281131695715e-06) q[59],q[38]; +cu1(7.490140565847857e-07) q[60],q[38]; +cu1(3.7450702829239286e-07) q[61],q[38]; +cu1(1.8725351414619643e-07) q[62],q[38]; +cu1(9.362675707309822e-08) q[63],q[38]; +cu1(4.681337853654911e-08) q[64],q[38]; +cu1(2.3406689268274554e-08) q[65],q[38]; +cu1(1.1703344634137277e-08) q[66],q[38]; +cu1(5.8516723170686385e-09) q[67],q[38]; +cu1(2.9258361585343192e-09) q[68],q[38]; +cu1(1.4629180792671596e-09) q[69],q[38]; +cu1(7.314590396335798e-10) q[70],q[38]; +cu1(3.657295198167899e-10) q[71],q[38]; +cu1(1.8286475990839495e-10) q[72],q[38]; +cu1(9.143237995419748e-11) q[73],q[38]; +cu1(4.571618997709874e-11) q[74],q[38]; +cu1(2.285809498854937e-11) q[75],q[38]; +cu1(1.1429047494274685e-11) q[76],q[38]; +cu1(5.714523747137342e-12) q[77],q[38]; +cu1(2.857261873568671e-12) q[78],q[38]; +cu1(1.4286309367843356e-12) q[79],q[38]; +cu1(7.143154683921678e-13) q[80],q[38]; +cu1(3.571577341960839e-13) q[81],q[38]; +cu1(1.7857886709804195e-13) q[82],q[38]; +cu1(8.928943354902097e-14) q[83],q[38]; +cu1(4.4644716774510487e-14) q[84],q[38]; +cu1(2.2322358387255243e-14) q[85],q[38]; +cu1(1.1161179193627622e-14) q[86],q[38]; +cu1(5.580589596813811e-15) q[87],q[38]; +cu1(2.7902947984069054e-15) q[88],q[38]; +cu1(1.3951473992034527e-15) q[89],q[38]; +h q[39]; +cu1(1.5707963267948966) q[40],q[39]; +cu1(0.7853981633974483) q[41],q[39]; +cu1(0.39269908169872414) q[42],q[39]; +cu1(0.19634954084936207) q[43],q[39]; +cu1(0.09817477042468103) q[44],q[39]; +cu1(0.04908738521234052) q[45],q[39]; +cu1(0.02454369260617026) q[46],q[39]; +cu1(0.01227184630308513) q[47],q[39]; +cu1(0.006135923151542565) q[48],q[39]; +cu1(0.0030679615757712823) q[49],q[39]; +cu1(0.0015339807878856412) q[50],q[39]; +cu1(0.0007669903939428206) q[51],q[39]; +cu1(0.0003834951969714103) q[52],q[39]; +cu1(0.00019174759848570515) q[53],q[39]; +cu1(9.587379924285257e-05) q[54],q[39]; +cu1(4.7936899621426287e-05) q[55],q[39]; +cu1(2.3968449810713143e-05) q[56],q[39]; +cu1(1.1984224905356572e-05) q[57],q[39]; +cu1(5.992112452678286e-06) q[58],q[39]; +cu1(2.996056226339143e-06) q[59],q[39]; +cu1(1.4980281131695715e-06) q[60],q[39]; +cu1(7.490140565847857e-07) q[61],q[39]; +cu1(3.7450702829239286e-07) q[62],q[39]; +cu1(1.8725351414619643e-07) q[63],q[39]; +cu1(9.362675707309822e-08) q[64],q[39]; +cu1(4.681337853654911e-08) q[65],q[39]; +cu1(2.3406689268274554e-08) q[66],q[39]; +cu1(1.1703344634137277e-08) q[67],q[39]; +cu1(5.8516723170686385e-09) q[68],q[39]; +cu1(2.9258361585343192e-09) q[69],q[39]; +cu1(1.4629180792671596e-09) q[70],q[39]; +cu1(7.314590396335798e-10) q[71],q[39]; +cu1(3.657295198167899e-10) q[72],q[39]; +cu1(1.8286475990839495e-10) q[73],q[39]; +cu1(9.143237995419748e-11) q[74],q[39]; +cu1(4.571618997709874e-11) q[75],q[39]; +cu1(2.285809498854937e-11) q[76],q[39]; +cu1(1.1429047494274685e-11) q[77],q[39]; +cu1(5.714523747137342e-12) q[78],q[39]; +cu1(2.857261873568671e-12) q[79],q[39]; +cu1(1.4286309367843356e-12) q[80],q[39]; +cu1(7.143154683921678e-13) q[81],q[39]; +cu1(3.571577341960839e-13) q[82],q[39]; +cu1(1.7857886709804195e-13) q[83],q[39]; +cu1(8.928943354902097e-14) q[84],q[39]; +cu1(4.4644716774510487e-14) q[85],q[39]; +cu1(2.2322358387255243e-14) q[86],q[39]; +cu1(1.1161179193627622e-14) q[87],q[39]; +cu1(5.580589596813811e-15) q[88],q[39]; +cu1(2.7902947984069054e-15) q[89],q[39]; +h q[40]; +cu1(1.5707963267948966) q[41],q[40]; +cu1(0.7853981633974483) q[42],q[40]; +cu1(0.39269908169872414) q[43],q[40]; +cu1(0.19634954084936207) q[44],q[40]; +cu1(0.09817477042468103) q[45],q[40]; +cu1(0.04908738521234052) q[46],q[40]; +cu1(0.02454369260617026) q[47],q[40]; +cu1(0.01227184630308513) q[48],q[40]; +cu1(0.006135923151542565) q[49],q[40]; +cu1(0.0030679615757712823) q[50],q[40]; +cu1(0.0015339807878856412) q[51],q[40]; +cu1(0.0007669903939428206) q[52],q[40]; +cu1(0.0003834951969714103) q[53],q[40]; +cu1(0.00019174759848570515) q[54],q[40]; +cu1(9.587379924285257e-05) q[55],q[40]; +cu1(4.7936899621426287e-05) q[56],q[40]; +cu1(2.3968449810713143e-05) q[57],q[40]; +cu1(1.1984224905356572e-05) q[58],q[40]; +cu1(5.992112452678286e-06) q[59],q[40]; +cu1(2.996056226339143e-06) q[60],q[40]; +cu1(1.4980281131695715e-06) q[61],q[40]; +cu1(7.490140565847857e-07) q[62],q[40]; +cu1(3.7450702829239286e-07) q[63],q[40]; +cu1(1.8725351414619643e-07) q[64],q[40]; +cu1(9.362675707309822e-08) q[65],q[40]; +cu1(4.681337853654911e-08) q[66],q[40]; +cu1(2.3406689268274554e-08) q[67],q[40]; +cu1(1.1703344634137277e-08) q[68],q[40]; +cu1(5.8516723170686385e-09) q[69],q[40]; +cu1(2.9258361585343192e-09) q[70],q[40]; +cu1(1.4629180792671596e-09) q[71],q[40]; +cu1(7.314590396335798e-10) q[72],q[40]; +cu1(3.657295198167899e-10) q[73],q[40]; +cu1(1.8286475990839495e-10) q[74],q[40]; +cu1(9.143237995419748e-11) q[75],q[40]; +cu1(4.571618997709874e-11) q[76],q[40]; +cu1(2.285809498854937e-11) q[77],q[40]; +cu1(1.1429047494274685e-11) q[78],q[40]; +cu1(5.714523747137342e-12) q[79],q[40]; +cu1(2.857261873568671e-12) q[80],q[40]; +cu1(1.4286309367843356e-12) q[81],q[40]; +cu1(7.143154683921678e-13) q[82],q[40]; +cu1(3.571577341960839e-13) q[83],q[40]; +cu1(1.7857886709804195e-13) q[84],q[40]; +cu1(8.928943354902097e-14) q[85],q[40]; +cu1(4.4644716774510487e-14) q[86],q[40]; +cu1(2.2322358387255243e-14) q[87],q[40]; +cu1(1.1161179193627622e-14) q[88],q[40]; +cu1(5.580589596813811e-15) q[89],q[40]; +h q[41]; +cu1(1.5707963267948966) q[42],q[41]; +cu1(0.7853981633974483) q[43],q[41]; +cu1(0.39269908169872414) q[44],q[41]; +cu1(0.19634954084936207) q[45],q[41]; +cu1(0.09817477042468103) q[46],q[41]; +cu1(0.04908738521234052) q[47],q[41]; +cu1(0.02454369260617026) q[48],q[41]; +cu1(0.01227184630308513) q[49],q[41]; +cu1(0.006135923151542565) q[50],q[41]; +cu1(0.0030679615757712823) q[51],q[41]; +cu1(0.0015339807878856412) q[52],q[41]; +cu1(0.0007669903939428206) q[53],q[41]; +cu1(0.0003834951969714103) q[54],q[41]; +cu1(0.00019174759848570515) q[55],q[41]; +cu1(9.587379924285257e-05) q[56],q[41]; +cu1(4.7936899621426287e-05) q[57],q[41]; +cu1(2.3968449810713143e-05) q[58],q[41]; +cu1(1.1984224905356572e-05) q[59],q[41]; +cu1(5.992112452678286e-06) q[60],q[41]; +cu1(2.996056226339143e-06) q[61],q[41]; +cu1(1.4980281131695715e-06) q[62],q[41]; +cu1(7.490140565847857e-07) q[63],q[41]; +cu1(3.7450702829239286e-07) q[64],q[41]; +cu1(1.8725351414619643e-07) q[65],q[41]; +cu1(9.362675707309822e-08) q[66],q[41]; +cu1(4.681337853654911e-08) q[67],q[41]; +cu1(2.3406689268274554e-08) q[68],q[41]; +cu1(1.1703344634137277e-08) q[69],q[41]; +cu1(5.8516723170686385e-09) q[70],q[41]; +cu1(2.9258361585343192e-09) q[71],q[41]; +cu1(1.4629180792671596e-09) q[72],q[41]; +cu1(7.314590396335798e-10) q[73],q[41]; +cu1(3.657295198167899e-10) q[74],q[41]; +cu1(1.8286475990839495e-10) q[75],q[41]; +cu1(9.143237995419748e-11) q[76],q[41]; +cu1(4.571618997709874e-11) q[77],q[41]; +cu1(2.285809498854937e-11) q[78],q[41]; +cu1(1.1429047494274685e-11) q[79],q[41]; +cu1(5.714523747137342e-12) q[80],q[41]; +cu1(2.857261873568671e-12) q[81],q[41]; +cu1(1.4286309367843356e-12) q[82],q[41]; +cu1(7.143154683921678e-13) q[83],q[41]; +cu1(3.571577341960839e-13) q[84],q[41]; +cu1(1.7857886709804195e-13) q[85],q[41]; +cu1(8.928943354902097e-14) q[86],q[41]; +cu1(4.4644716774510487e-14) q[87],q[41]; +cu1(2.2322358387255243e-14) q[88],q[41]; +cu1(1.1161179193627622e-14) q[89],q[41]; +h q[42]; +cu1(1.5707963267948966) q[43],q[42]; +cu1(0.7853981633974483) q[44],q[42]; +cu1(0.39269908169872414) q[45],q[42]; +cu1(0.19634954084936207) q[46],q[42]; +cu1(0.09817477042468103) q[47],q[42]; +cu1(0.04908738521234052) q[48],q[42]; +cu1(0.02454369260617026) q[49],q[42]; +cu1(0.01227184630308513) q[50],q[42]; +cu1(0.006135923151542565) q[51],q[42]; +cu1(0.0030679615757712823) q[52],q[42]; +cu1(0.0015339807878856412) q[53],q[42]; +cu1(0.0007669903939428206) q[54],q[42]; +cu1(0.0003834951969714103) q[55],q[42]; +cu1(0.00019174759848570515) q[56],q[42]; +cu1(9.587379924285257e-05) q[57],q[42]; +cu1(4.7936899621426287e-05) q[58],q[42]; +cu1(2.3968449810713143e-05) q[59],q[42]; +cu1(1.1984224905356572e-05) q[60],q[42]; +cu1(5.992112452678286e-06) q[61],q[42]; +cu1(2.996056226339143e-06) q[62],q[42]; +cu1(1.4980281131695715e-06) q[63],q[42]; +cu1(7.490140565847857e-07) q[64],q[42]; +cu1(3.7450702829239286e-07) q[65],q[42]; +cu1(1.8725351414619643e-07) q[66],q[42]; +cu1(9.362675707309822e-08) q[67],q[42]; +cu1(4.681337853654911e-08) q[68],q[42]; +cu1(2.3406689268274554e-08) q[69],q[42]; +cu1(1.1703344634137277e-08) q[70],q[42]; +cu1(5.8516723170686385e-09) q[71],q[42]; +cu1(2.9258361585343192e-09) q[72],q[42]; +cu1(1.4629180792671596e-09) q[73],q[42]; +cu1(7.314590396335798e-10) q[74],q[42]; +cu1(3.657295198167899e-10) q[75],q[42]; +cu1(1.8286475990839495e-10) q[76],q[42]; +cu1(9.143237995419748e-11) q[77],q[42]; +cu1(4.571618997709874e-11) q[78],q[42]; +cu1(2.285809498854937e-11) q[79],q[42]; +cu1(1.1429047494274685e-11) q[80],q[42]; +cu1(5.714523747137342e-12) q[81],q[42]; +cu1(2.857261873568671e-12) q[82],q[42]; +cu1(1.4286309367843356e-12) q[83],q[42]; +cu1(7.143154683921678e-13) q[84],q[42]; +cu1(3.571577341960839e-13) q[85],q[42]; +cu1(1.7857886709804195e-13) q[86],q[42]; +cu1(8.928943354902097e-14) q[87],q[42]; +cu1(4.4644716774510487e-14) q[88],q[42]; +cu1(2.2322358387255243e-14) q[89],q[42]; +h q[43]; +cu1(1.5707963267948966) q[44],q[43]; +cu1(0.7853981633974483) q[45],q[43]; +cu1(0.39269908169872414) q[46],q[43]; +cu1(0.19634954084936207) q[47],q[43]; +cu1(0.09817477042468103) q[48],q[43]; +cu1(0.04908738521234052) q[49],q[43]; +cu1(0.02454369260617026) q[50],q[43]; +cu1(0.01227184630308513) q[51],q[43]; +cu1(0.006135923151542565) q[52],q[43]; +cu1(0.0030679615757712823) q[53],q[43]; +cu1(0.0015339807878856412) q[54],q[43]; +cu1(0.0007669903939428206) q[55],q[43]; +cu1(0.0003834951969714103) q[56],q[43]; +cu1(0.00019174759848570515) q[57],q[43]; +cu1(9.587379924285257e-05) q[58],q[43]; +cu1(4.7936899621426287e-05) q[59],q[43]; +cu1(2.3968449810713143e-05) q[60],q[43]; +cu1(1.1984224905356572e-05) q[61],q[43]; +cu1(5.992112452678286e-06) q[62],q[43]; +cu1(2.996056226339143e-06) q[63],q[43]; +cu1(1.4980281131695715e-06) q[64],q[43]; +cu1(7.490140565847857e-07) q[65],q[43]; +cu1(3.7450702829239286e-07) q[66],q[43]; +cu1(1.8725351414619643e-07) q[67],q[43]; +cu1(9.362675707309822e-08) q[68],q[43]; +cu1(4.681337853654911e-08) q[69],q[43]; +cu1(2.3406689268274554e-08) q[70],q[43]; +cu1(1.1703344634137277e-08) q[71],q[43]; +cu1(5.8516723170686385e-09) q[72],q[43]; +cu1(2.9258361585343192e-09) q[73],q[43]; +cu1(1.4629180792671596e-09) q[74],q[43]; +cu1(7.314590396335798e-10) q[75],q[43]; +cu1(3.657295198167899e-10) q[76],q[43]; +cu1(1.8286475990839495e-10) q[77],q[43]; +cu1(9.143237995419748e-11) q[78],q[43]; +cu1(4.571618997709874e-11) q[79],q[43]; +cu1(2.285809498854937e-11) q[80],q[43]; +cu1(1.1429047494274685e-11) q[81],q[43]; +cu1(5.714523747137342e-12) q[82],q[43]; +cu1(2.857261873568671e-12) q[83],q[43]; +cu1(1.4286309367843356e-12) q[84],q[43]; +cu1(7.143154683921678e-13) q[85],q[43]; +cu1(3.571577341960839e-13) q[86],q[43]; +cu1(1.7857886709804195e-13) q[87],q[43]; +cu1(8.928943354902097e-14) q[88],q[43]; +cu1(4.4644716774510487e-14) q[89],q[43]; +h q[44]; +cu1(1.5707963267948966) q[45],q[44]; +cu1(0.7853981633974483) q[46],q[44]; +cu1(0.39269908169872414) q[47],q[44]; +cu1(0.19634954084936207) q[48],q[44]; +cu1(0.09817477042468103) q[49],q[44]; +cu1(0.04908738521234052) q[50],q[44]; +cu1(0.02454369260617026) q[51],q[44]; +cu1(0.01227184630308513) q[52],q[44]; +cu1(0.006135923151542565) q[53],q[44]; +cu1(0.0030679615757712823) q[54],q[44]; +cu1(0.0015339807878856412) q[55],q[44]; +cu1(0.0007669903939428206) q[56],q[44]; +cu1(0.0003834951969714103) q[57],q[44]; +cu1(0.00019174759848570515) q[58],q[44]; +cu1(9.587379924285257e-05) q[59],q[44]; +cu1(4.7936899621426287e-05) q[60],q[44]; +cu1(2.3968449810713143e-05) q[61],q[44]; +cu1(1.1984224905356572e-05) q[62],q[44]; +cu1(5.992112452678286e-06) q[63],q[44]; +cu1(2.996056226339143e-06) q[64],q[44]; +cu1(1.4980281131695715e-06) q[65],q[44]; +cu1(7.490140565847857e-07) q[66],q[44]; +cu1(3.7450702829239286e-07) q[67],q[44]; +cu1(1.8725351414619643e-07) q[68],q[44]; +cu1(9.362675707309822e-08) q[69],q[44]; +cu1(4.681337853654911e-08) q[70],q[44]; +cu1(2.3406689268274554e-08) q[71],q[44]; +cu1(1.1703344634137277e-08) q[72],q[44]; +cu1(5.8516723170686385e-09) q[73],q[44]; +cu1(2.9258361585343192e-09) q[74],q[44]; +cu1(1.4629180792671596e-09) q[75],q[44]; +cu1(7.314590396335798e-10) q[76],q[44]; +cu1(3.657295198167899e-10) q[77],q[44]; +cu1(1.8286475990839495e-10) q[78],q[44]; +cu1(9.143237995419748e-11) q[79],q[44]; +cu1(4.571618997709874e-11) q[80],q[44]; +cu1(2.285809498854937e-11) q[81],q[44]; +cu1(1.1429047494274685e-11) q[82],q[44]; +cu1(5.714523747137342e-12) q[83],q[44]; +cu1(2.857261873568671e-12) q[84],q[44]; +cu1(1.4286309367843356e-12) q[85],q[44]; +cu1(7.143154683921678e-13) q[86],q[44]; +cu1(3.571577341960839e-13) q[87],q[44]; +cu1(1.7857886709804195e-13) q[88],q[44]; +cu1(8.928943354902097e-14) q[89],q[44]; +h q[45]; +cu1(1.5707963267948966) q[46],q[45]; +cu1(0.7853981633974483) q[47],q[45]; +cu1(0.39269908169872414) q[48],q[45]; +cu1(0.19634954084936207) q[49],q[45]; +cu1(0.09817477042468103) q[50],q[45]; +cu1(0.04908738521234052) q[51],q[45]; +cu1(0.02454369260617026) q[52],q[45]; +cu1(0.01227184630308513) q[53],q[45]; +cu1(0.006135923151542565) q[54],q[45]; +cu1(0.0030679615757712823) q[55],q[45]; +cu1(0.0015339807878856412) q[56],q[45]; +cu1(0.0007669903939428206) q[57],q[45]; +cu1(0.0003834951969714103) q[58],q[45]; +cu1(0.00019174759848570515) q[59],q[45]; +cu1(9.587379924285257e-05) q[60],q[45]; +cu1(4.7936899621426287e-05) q[61],q[45]; +cu1(2.3968449810713143e-05) q[62],q[45]; +cu1(1.1984224905356572e-05) q[63],q[45]; +cu1(5.992112452678286e-06) q[64],q[45]; +cu1(2.996056226339143e-06) q[65],q[45]; +cu1(1.4980281131695715e-06) q[66],q[45]; +cu1(7.490140565847857e-07) q[67],q[45]; +cu1(3.7450702829239286e-07) q[68],q[45]; +cu1(1.8725351414619643e-07) q[69],q[45]; +cu1(9.362675707309822e-08) q[70],q[45]; +cu1(4.681337853654911e-08) q[71],q[45]; +cu1(2.3406689268274554e-08) q[72],q[45]; +cu1(1.1703344634137277e-08) q[73],q[45]; +cu1(5.8516723170686385e-09) q[74],q[45]; +cu1(2.9258361585343192e-09) q[75],q[45]; +cu1(1.4629180792671596e-09) q[76],q[45]; +cu1(7.314590396335798e-10) q[77],q[45]; +cu1(3.657295198167899e-10) q[78],q[45]; +cu1(1.8286475990839495e-10) q[79],q[45]; +cu1(9.143237995419748e-11) q[80],q[45]; +cu1(4.571618997709874e-11) q[81],q[45]; +cu1(2.285809498854937e-11) q[82],q[45]; +cu1(1.1429047494274685e-11) q[83],q[45]; +cu1(5.714523747137342e-12) q[84],q[45]; +cu1(2.857261873568671e-12) q[85],q[45]; +cu1(1.4286309367843356e-12) q[86],q[45]; +cu1(7.143154683921678e-13) q[87],q[45]; +cu1(3.571577341960839e-13) q[88],q[45]; +cu1(1.7857886709804195e-13) q[89],q[45]; +h q[46]; +cu1(1.5707963267948966) q[47],q[46]; +cu1(0.7853981633974483) q[48],q[46]; +cu1(0.39269908169872414) q[49],q[46]; +cu1(0.19634954084936207) q[50],q[46]; +cu1(0.09817477042468103) q[51],q[46]; +cu1(0.04908738521234052) q[52],q[46]; +cu1(0.02454369260617026) q[53],q[46]; +cu1(0.01227184630308513) q[54],q[46]; +cu1(0.006135923151542565) q[55],q[46]; +cu1(0.0030679615757712823) q[56],q[46]; +cu1(0.0015339807878856412) q[57],q[46]; +cu1(0.0007669903939428206) q[58],q[46]; +cu1(0.0003834951969714103) q[59],q[46]; +cu1(0.00019174759848570515) q[60],q[46]; +cu1(9.587379924285257e-05) q[61],q[46]; +cu1(4.7936899621426287e-05) q[62],q[46]; +cu1(2.3968449810713143e-05) q[63],q[46]; +cu1(1.1984224905356572e-05) q[64],q[46]; +cu1(5.992112452678286e-06) q[65],q[46]; +cu1(2.996056226339143e-06) q[66],q[46]; +cu1(1.4980281131695715e-06) q[67],q[46]; +cu1(7.490140565847857e-07) q[68],q[46]; +cu1(3.7450702829239286e-07) q[69],q[46]; +cu1(1.8725351414619643e-07) q[70],q[46]; +cu1(9.362675707309822e-08) q[71],q[46]; +cu1(4.681337853654911e-08) q[72],q[46]; +cu1(2.3406689268274554e-08) q[73],q[46]; +cu1(1.1703344634137277e-08) q[74],q[46]; +cu1(5.8516723170686385e-09) q[75],q[46]; +cu1(2.9258361585343192e-09) q[76],q[46]; +cu1(1.4629180792671596e-09) q[77],q[46]; +cu1(7.314590396335798e-10) q[78],q[46]; +cu1(3.657295198167899e-10) q[79],q[46]; +cu1(1.8286475990839495e-10) q[80],q[46]; +cu1(9.143237995419748e-11) q[81],q[46]; +cu1(4.571618997709874e-11) q[82],q[46]; +cu1(2.285809498854937e-11) q[83],q[46]; +cu1(1.1429047494274685e-11) q[84],q[46]; +cu1(5.714523747137342e-12) q[85],q[46]; +cu1(2.857261873568671e-12) q[86],q[46]; +cu1(1.4286309367843356e-12) q[87],q[46]; +cu1(7.143154683921678e-13) q[88],q[46]; +cu1(3.571577341960839e-13) q[89],q[46]; +h q[47]; +cu1(1.5707963267948966) q[48],q[47]; +cu1(0.7853981633974483) q[49],q[47]; +cu1(0.39269908169872414) q[50],q[47]; +cu1(0.19634954084936207) q[51],q[47]; +cu1(0.09817477042468103) q[52],q[47]; +cu1(0.04908738521234052) q[53],q[47]; +cu1(0.02454369260617026) q[54],q[47]; +cu1(0.01227184630308513) q[55],q[47]; +cu1(0.006135923151542565) q[56],q[47]; +cu1(0.0030679615757712823) q[57],q[47]; +cu1(0.0015339807878856412) q[58],q[47]; +cu1(0.0007669903939428206) q[59],q[47]; +cu1(0.0003834951969714103) q[60],q[47]; +cu1(0.00019174759848570515) q[61],q[47]; +cu1(9.587379924285257e-05) q[62],q[47]; +cu1(4.7936899621426287e-05) q[63],q[47]; +cu1(2.3968449810713143e-05) q[64],q[47]; +cu1(1.1984224905356572e-05) q[65],q[47]; +cu1(5.992112452678286e-06) q[66],q[47]; +cu1(2.996056226339143e-06) q[67],q[47]; +cu1(1.4980281131695715e-06) q[68],q[47]; +cu1(7.490140565847857e-07) q[69],q[47]; +cu1(3.7450702829239286e-07) q[70],q[47]; +cu1(1.8725351414619643e-07) q[71],q[47]; +cu1(9.362675707309822e-08) q[72],q[47]; +cu1(4.681337853654911e-08) q[73],q[47]; +cu1(2.3406689268274554e-08) q[74],q[47]; +cu1(1.1703344634137277e-08) q[75],q[47]; +cu1(5.8516723170686385e-09) q[76],q[47]; +cu1(2.9258361585343192e-09) q[77],q[47]; +cu1(1.4629180792671596e-09) q[78],q[47]; +cu1(7.314590396335798e-10) q[79],q[47]; +cu1(3.657295198167899e-10) q[80],q[47]; +cu1(1.8286475990839495e-10) q[81],q[47]; +cu1(9.143237995419748e-11) q[82],q[47]; +cu1(4.571618997709874e-11) q[83],q[47]; +cu1(2.285809498854937e-11) q[84],q[47]; +cu1(1.1429047494274685e-11) q[85],q[47]; +cu1(5.714523747137342e-12) q[86],q[47]; +cu1(2.857261873568671e-12) q[87],q[47]; +cu1(1.4286309367843356e-12) q[88],q[47]; +cu1(7.143154683921678e-13) q[89],q[47]; +h q[48]; +cu1(1.5707963267948966) q[49],q[48]; +cu1(0.7853981633974483) q[50],q[48]; +cu1(0.39269908169872414) q[51],q[48]; +cu1(0.19634954084936207) q[52],q[48]; +cu1(0.09817477042468103) q[53],q[48]; +cu1(0.04908738521234052) q[54],q[48]; +cu1(0.02454369260617026) q[55],q[48]; +cu1(0.01227184630308513) q[56],q[48]; +cu1(0.006135923151542565) q[57],q[48]; +cu1(0.0030679615757712823) q[58],q[48]; +cu1(0.0015339807878856412) q[59],q[48]; +cu1(0.0007669903939428206) q[60],q[48]; +cu1(0.0003834951969714103) q[61],q[48]; +cu1(0.00019174759848570515) q[62],q[48]; +cu1(9.587379924285257e-05) q[63],q[48]; +cu1(4.7936899621426287e-05) q[64],q[48]; +cu1(2.3968449810713143e-05) q[65],q[48]; +cu1(1.1984224905356572e-05) q[66],q[48]; +cu1(5.992112452678286e-06) q[67],q[48]; +cu1(2.996056226339143e-06) q[68],q[48]; +cu1(1.4980281131695715e-06) q[69],q[48]; +cu1(7.490140565847857e-07) q[70],q[48]; +cu1(3.7450702829239286e-07) q[71],q[48]; +cu1(1.8725351414619643e-07) q[72],q[48]; +cu1(9.362675707309822e-08) q[73],q[48]; +cu1(4.681337853654911e-08) q[74],q[48]; +cu1(2.3406689268274554e-08) q[75],q[48]; +cu1(1.1703344634137277e-08) q[76],q[48]; +cu1(5.8516723170686385e-09) q[77],q[48]; +cu1(2.9258361585343192e-09) q[78],q[48]; +cu1(1.4629180792671596e-09) q[79],q[48]; +cu1(7.314590396335798e-10) q[80],q[48]; +cu1(3.657295198167899e-10) q[81],q[48]; +cu1(1.8286475990839495e-10) q[82],q[48]; +cu1(9.143237995419748e-11) q[83],q[48]; +cu1(4.571618997709874e-11) q[84],q[48]; +cu1(2.285809498854937e-11) q[85],q[48]; +cu1(1.1429047494274685e-11) q[86],q[48]; +cu1(5.714523747137342e-12) q[87],q[48]; +cu1(2.857261873568671e-12) q[88],q[48]; +cu1(1.4286309367843356e-12) q[89],q[48]; +h q[49]; +cu1(1.5707963267948966) q[50],q[49]; +cu1(0.7853981633974483) q[51],q[49]; +cu1(0.39269908169872414) q[52],q[49]; +cu1(0.19634954084936207) q[53],q[49]; +cu1(0.09817477042468103) q[54],q[49]; +cu1(0.04908738521234052) q[55],q[49]; +cu1(0.02454369260617026) q[56],q[49]; +cu1(0.01227184630308513) q[57],q[49]; +cu1(0.006135923151542565) q[58],q[49]; +cu1(0.0030679615757712823) q[59],q[49]; +cu1(0.0015339807878856412) q[60],q[49]; +cu1(0.0007669903939428206) q[61],q[49]; +cu1(0.0003834951969714103) q[62],q[49]; +cu1(0.00019174759848570515) q[63],q[49]; +cu1(9.587379924285257e-05) q[64],q[49]; +cu1(4.7936899621426287e-05) q[65],q[49]; +cu1(2.3968449810713143e-05) q[66],q[49]; +cu1(1.1984224905356572e-05) q[67],q[49]; +cu1(5.992112452678286e-06) q[68],q[49]; +cu1(2.996056226339143e-06) q[69],q[49]; +cu1(1.4980281131695715e-06) q[70],q[49]; +cu1(7.490140565847857e-07) q[71],q[49]; +cu1(3.7450702829239286e-07) q[72],q[49]; +cu1(1.8725351414619643e-07) q[73],q[49]; +cu1(9.362675707309822e-08) q[74],q[49]; +cu1(4.681337853654911e-08) q[75],q[49]; +cu1(2.3406689268274554e-08) q[76],q[49]; +cu1(1.1703344634137277e-08) q[77],q[49]; +cu1(5.8516723170686385e-09) q[78],q[49]; +cu1(2.9258361585343192e-09) q[79],q[49]; +cu1(1.4629180792671596e-09) q[80],q[49]; +cu1(7.314590396335798e-10) q[81],q[49]; +cu1(3.657295198167899e-10) q[82],q[49]; +cu1(1.8286475990839495e-10) q[83],q[49]; +cu1(9.143237995419748e-11) q[84],q[49]; +cu1(4.571618997709874e-11) q[85],q[49]; +cu1(2.285809498854937e-11) q[86],q[49]; +cu1(1.1429047494274685e-11) q[87],q[49]; +cu1(5.714523747137342e-12) q[88],q[49]; +cu1(2.857261873568671e-12) q[89],q[49]; +h q[50]; +cu1(1.5707963267948966) q[51],q[50]; +cu1(0.7853981633974483) q[52],q[50]; +cu1(0.39269908169872414) q[53],q[50]; +cu1(0.19634954084936207) q[54],q[50]; +cu1(0.09817477042468103) q[55],q[50]; +cu1(0.04908738521234052) q[56],q[50]; +cu1(0.02454369260617026) q[57],q[50]; +cu1(0.01227184630308513) q[58],q[50]; +cu1(0.006135923151542565) q[59],q[50]; +cu1(0.0030679615757712823) q[60],q[50]; +cu1(0.0015339807878856412) q[61],q[50]; +cu1(0.0007669903939428206) q[62],q[50]; +cu1(0.0003834951969714103) q[63],q[50]; +cu1(0.00019174759848570515) q[64],q[50]; +cu1(9.587379924285257e-05) q[65],q[50]; +cu1(4.7936899621426287e-05) q[66],q[50]; +cu1(2.3968449810713143e-05) q[67],q[50]; +cu1(1.1984224905356572e-05) q[68],q[50]; +cu1(5.992112452678286e-06) q[69],q[50]; +cu1(2.996056226339143e-06) q[70],q[50]; +cu1(1.4980281131695715e-06) q[71],q[50]; +cu1(7.490140565847857e-07) q[72],q[50]; +cu1(3.7450702829239286e-07) q[73],q[50]; +cu1(1.8725351414619643e-07) q[74],q[50]; +cu1(9.362675707309822e-08) q[75],q[50]; +cu1(4.681337853654911e-08) q[76],q[50]; +cu1(2.3406689268274554e-08) q[77],q[50]; +cu1(1.1703344634137277e-08) q[78],q[50]; +cu1(5.8516723170686385e-09) q[79],q[50]; +cu1(2.9258361585343192e-09) q[80],q[50]; +cu1(1.4629180792671596e-09) q[81],q[50]; +cu1(7.314590396335798e-10) q[82],q[50]; +cu1(3.657295198167899e-10) q[83],q[50]; +cu1(1.8286475990839495e-10) q[84],q[50]; +cu1(9.143237995419748e-11) q[85],q[50]; +cu1(4.571618997709874e-11) q[86],q[50]; +cu1(2.285809498854937e-11) q[87],q[50]; +cu1(1.1429047494274685e-11) q[88],q[50]; +cu1(5.714523747137342e-12) q[89],q[50]; +h q[51]; +cu1(1.5707963267948966) q[52],q[51]; +cu1(0.7853981633974483) q[53],q[51]; +cu1(0.39269908169872414) q[54],q[51]; +cu1(0.19634954084936207) q[55],q[51]; +cu1(0.09817477042468103) q[56],q[51]; +cu1(0.04908738521234052) q[57],q[51]; +cu1(0.02454369260617026) q[58],q[51]; +cu1(0.01227184630308513) q[59],q[51]; +cu1(0.006135923151542565) q[60],q[51]; +cu1(0.0030679615757712823) q[61],q[51]; +cu1(0.0015339807878856412) q[62],q[51]; +cu1(0.0007669903939428206) q[63],q[51]; +cu1(0.0003834951969714103) q[64],q[51]; +cu1(0.00019174759848570515) q[65],q[51]; +cu1(9.587379924285257e-05) q[66],q[51]; +cu1(4.7936899621426287e-05) q[67],q[51]; +cu1(2.3968449810713143e-05) q[68],q[51]; +cu1(1.1984224905356572e-05) q[69],q[51]; +cu1(5.992112452678286e-06) q[70],q[51]; +cu1(2.996056226339143e-06) q[71],q[51]; +cu1(1.4980281131695715e-06) q[72],q[51]; +cu1(7.490140565847857e-07) q[73],q[51]; +cu1(3.7450702829239286e-07) q[74],q[51]; +cu1(1.8725351414619643e-07) q[75],q[51]; +cu1(9.362675707309822e-08) q[76],q[51]; +cu1(4.681337853654911e-08) q[77],q[51]; +cu1(2.3406689268274554e-08) q[78],q[51]; +cu1(1.1703344634137277e-08) q[79],q[51]; +cu1(5.8516723170686385e-09) q[80],q[51]; +cu1(2.9258361585343192e-09) q[81],q[51]; +cu1(1.4629180792671596e-09) q[82],q[51]; +cu1(7.314590396335798e-10) q[83],q[51]; +cu1(3.657295198167899e-10) q[84],q[51]; +cu1(1.8286475990839495e-10) q[85],q[51]; +cu1(9.143237995419748e-11) q[86],q[51]; +cu1(4.571618997709874e-11) q[87],q[51]; +cu1(2.285809498854937e-11) q[88],q[51]; +cu1(1.1429047494274685e-11) q[89],q[51]; +h q[52]; +cu1(1.5707963267948966) q[53],q[52]; +cu1(0.7853981633974483) q[54],q[52]; +cu1(0.39269908169872414) q[55],q[52]; +cu1(0.19634954084936207) q[56],q[52]; +cu1(0.09817477042468103) q[57],q[52]; +cu1(0.04908738521234052) q[58],q[52]; +cu1(0.02454369260617026) q[59],q[52]; +cu1(0.01227184630308513) q[60],q[52]; +cu1(0.006135923151542565) q[61],q[52]; +cu1(0.0030679615757712823) q[62],q[52]; +cu1(0.0015339807878856412) q[63],q[52]; +cu1(0.0007669903939428206) q[64],q[52]; +cu1(0.0003834951969714103) q[65],q[52]; +cu1(0.00019174759848570515) q[66],q[52]; +cu1(9.587379924285257e-05) q[67],q[52]; +cu1(4.7936899621426287e-05) q[68],q[52]; +cu1(2.3968449810713143e-05) q[69],q[52]; +cu1(1.1984224905356572e-05) q[70],q[52]; +cu1(5.992112452678286e-06) q[71],q[52]; +cu1(2.996056226339143e-06) q[72],q[52]; +cu1(1.4980281131695715e-06) q[73],q[52]; +cu1(7.490140565847857e-07) q[74],q[52]; +cu1(3.7450702829239286e-07) q[75],q[52]; +cu1(1.8725351414619643e-07) q[76],q[52]; +cu1(9.362675707309822e-08) q[77],q[52]; +cu1(4.681337853654911e-08) q[78],q[52]; +cu1(2.3406689268274554e-08) q[79],q[52]; +cu1(1.1703344634137277e-08) q[80],q[52]; +cu1(5.8516723170686385e-09) q[81],q[52]; +cu1(2.9258361585343192e-09) q[82],q[52]; +cu1(1.4629180792671596e-09) q[83],q[52]; +cu1(7.314590396335798e-10) q[84],q[52]; +cu1(3.657295198167899e-10) q[85],q[52]; +cu1(1.8286475990839495e-10) q[86],q[52]; +cu1(9.143237995419748e-11) q[87],q[52]; +cu1(4.571618997709874e-11) q[88],q[52]; +cu1(2.285809498854937e-11) q[89],q[52]; +h q[53]; +cu1(1.5707963267948966) q[54],q[53]; +cu1(0.7853981633974483) q[55],q[53]; +cu1(0.39269908169872414) q[56],q[53]; +cu1(0.19634954084936207) q[57],q[53]; +cu1(0.09817477042468103) q[58],q[53]; +cu1(0.04908738521234052) q[59],q[53]; +cu1(0.02454369260617026) q[60],q[53]; +cu1(0.01227184630308513) q[61],q[53]; +cu1(0.006135923151542565) q[62],q[53]; +cu1(0.0030679615757712823) q[63],q[53]; +cu1(0.0015339807878856412) q[64],q[53]; +cu1(0.0007669903939428206) q[65],q[53]; +cu1(0.0003834951969714103) q[66],q[53]; +cu1(0.00019174759848570515) q[67],q[53]; +cu1(9.587379924285257e-05) q[68],q[53]; +cu1(4.7936899621426287e-05) q[69],q[53]; +cu1(2.3968449810713143e-05) q[70],q[53]; +cu1(1.1984224905356572e-05) q[71],q[53]; +cu1(5.992112452678286e-06) q[72],q[53]; +cu1(2.996056226339143e-06) q[73],q[53]; +cu1(1.4980281131695715e-06) q[74],q[53]; +cu1(7.490140565847857e-07) q[75],q[53]; +cu1(3.7450702829239286e-07) q[76],q[53]; +cu1(1.8725351414619643e-07) q[77],q[53]; +cu1(9.362675707309822e-08) q[78],q[53]; +cu1(4.681337853654911e-08) q[79],q[53]; +cu1(2.3406689268274554e-08) q[80],q[53]; +cu1(1.1703344634137277e-08) q[81],q[53]; +cu1(5.8516723170686385e-09) q[82],q[53]; +cu1(2.9258361585343192e-09) q[83],q[53]; +cu1(1.4629180792671596e-09) q[84],q[53]; +cu1(7.314590396335798e-10) q[85],q[53]; +cu1(3.657295198167899e-10) q[86],q[53]; +cu1(1.8286475990839495e-10) q[87],q[53]; +cu1(9.143237995419748e-11) q[88],q[53]; +cu1(4.571618997709874e-11) q[89],q[53]; +h q[54]; +cu1(1.5707963267948966) q[55],q[54]; +cu1(0.7853981633974483) q[56],q[54]; +cu1(0.39269908169872414) q[57],q[54]; +cu1(0.19634954084936207) q[58],q[54]; +cu1(0.09817477042468103) q[59],q[54]; +cu1(0.04908738521234052) q[60],q[54]; +cu1(0.02454369260617026) q[61],q[54]; +cu1(0.01227184630308513) q[62],q[54]; +cu1(0.006135923151542565) q[63],q[54]; +cu1(0.0030679615757712823) q[64],q[54]; +cu1(0.0015339807878856412) q[65],q[54]; +cu1(0.0007669903939428206) q[66],q[54]; +cu1(0.0003834951969714103) q[67],q[54]; +cu1(0.00019174759848570515) q[68],q[54]; +cu1(9.587379924285257e-05) q[69],q[54]; +cu1(4.7936899621426287e-05) q[70],q[54]; +cu1(2.3968449810713143e-05) q[71],q[54]; +cu1(1.1984224905356572e-05) q[72],q[54]; +cu1(5.992112452678286e-06) q[73],q[54]; +cu1(2.996056226339143e-06) q[74],q[54]; +cu1(1.4980281131695715e-06) q[75],q[54]; +cu1(7.490140565847857e-07) q[76],q[54]; +cu1(3.7450702829239286e-07) q[77],q[54]; +cu1(1.8725351414619643e-07) q[78],q[54]; +cu1(9.362675707309822e-08) q[79],q[54]; +cu1(4.681337853654911e-08) q[80],q[54]; +cu1(2.3406689268274554e-08) q[81],q[54]; +cu1(1.1703344634137277e-08) q[82],q[54]; +cu1(5.8516723170686385e-09) q[83],q[54]; +cu1(2.9258361585343192e-09) q[84],q[54]; +cu1(1.4629180792671596e-09) q[85],q[54]; +cu1(7.314590396335798e-10) q[86],q[54]; +cu1(3.657295198167899e-10) q[87],q[54]; +cu1(1.8286475990839495e-10) q[88],q[54]; +cu1(9.143237995419748e-11) q[89],q[54]; +h q[55]; +cu1(1.5707963267948966) q[56],q[55]; +cu1(0.7853981633974483) q[57],q[55]; +cu1(0.39269908169872414) q[58],q[55]; +cu1(0.19634954084936207) q[59],q[55]; +cu1(0.09817477042468103) q[60],q[55]; +cu1(0.04908738521234052) q[61],q[55]; +cu1(0.02454369260617026) q[62],q[55]; +cu1(0.01227184630308513) q[63],q[55]; +cu1(0.006135923151542565) q[64],q[55]; +cu1(0.0030679615757712823) q[65],q[55]; +cu1(0.0015339807878856412) q[66],q[55]; +cu1(0.0007669903939428206) q[67],q[55]; +cu1(0.0003834951969714103) q[68],q[55]; +cu1(0.00019174759848570515) q[69],q[55]; +cu1(9.587379924285257e-05) q[70],q[55]; +cu1(4.7936899621426287e-05) q[71],q[55]; +cu1(2.3968449810713143e-05) q[72],q[55]; +cu1(1.1984224905356572e-05) q[73],q[55]; +cu1(5.992112452678286e-06) q[74],q[55]; +cu1(2.996056226339143e-06) q[75],q[55]; +cu1(1.4980281131695715e-06) q[76],q[55]; +cu1(7.490140565847857e-07) q[77],q[55]; +cu1(3.7450702829239286e-07) q[78],q[55]; +cu1(1.8725351414619643e-07) q[79],q[55]; +cu1(9.362675707309822e-08) q[80],q[55]; +cu1(4.681337853654911e-08) q[81],q[55]; +cu1(2.3406689268274554e-08) q[82],q[55]; +cu1(1.1703344634137277e-08) q[83],q[55]; +cu1(5.8516723170686385e-09) q[84],q[55]; +cu1(2.9258361585343192e-09) q[85],q[55]; +cu1(1.4629180792671596e-09) q[86],q[55]; +cu1(7.314590396335798e-10) q[87],q[55]; +cu1(3.657295198167899e-10) q[88],q[55]; +cu1(1.8286475990839495e-10) q[89],q[55]; +h q[56]; +cu1(1.5707963267948966) q[57],q[56]; +cu1(0.7853981633974483) q[58],q[56]; +cu1(0.39269908169872414) q[59],q[56]; +cu1(0.19634954084936207) q[60],q[56]; +cu1(0.09817477042468103) q[61],q[56]; +cu1(0.04908738521234052) q[62],q[56]; +cu1(0.02454369260617026) q[63],q[56]; +cu1(0.01227184630308513) q[64],q[56]; +cu1(0.006135923151542565) q[65],q[56]; +cu1(0.0030679615757712823) q[66],q[56]; +cu1(0.0015339807878856412) q[67],q[56]; +cu1(0.0007669903939428206) q[68],q[56]; +cu1(0.0003834951969714103) q[69],q[56]; +cu1(0.00019174759848570515) q[70],q[56]; +cu1(9.587379924285257e-05) q[71],q[56]; +cu1(4.7936899621426287e-05) q[72],q[56]; +cu1(2.3968449810713143e-05) q[73],q[56]; +cu1(1.1984224905356572e-05) q[74],q[56]; +cu1(5.992112452678286e-06) q[75],q[56]; +cu1(2.996056226339143e-06) q[76],q[56]; +cu1(1.4980281131695715e-06) q[77],q[56]; +cu1(7.490140565847857e-07) q[78],q[56]; +cu1(3.7450702829239286e-07) q[79],q[56]; +cu1(1.8725351414619643e-07) q[80],q[56]; +cu1(9.362675707309822e-08) q[81],q[56]; +cu1(4.681337853654911e-08) q[82],q[56]; +cu1(2.3406689268274554e-08) q[83],q[56]; +cu1(1.1703344634137277e-08) q[84],q[56]; +cu1(5.8516723170686385e-09) q[85],q[56]; +cu1(2.9258361585343192e-09) q[86],q[56]; +cu1(1.4629180792671596e-09) q[87],q[56]; +cu1(7.314590396335798e-10) q[88],q[56]; +cu1(3.657295198167899e-10) q[89],q[56]; +h q[57]; +cu1(1.5707963267948966) q[58],q[57]; +cu1(0.7853981633974483) q[59],q[57]; +cu1(0.39269908169872414) q[60],q[57]; +cu1(0.19634954084936207) q[61],q[57]; +cu1(0.09817477042468103) q[62],q[57]; +cu1(0.04908738521234052) q[63],q[57]; +cu1(0.02454369260617026) q[64],q[57]; +cu1(0.01227184630308513) q[65],q[57]; +cu1(0.006135923151542565) q[66],q[57]; +cu1(0.0030679615757712823) q[67],q[57]; +cu1(0.0015339807878856412) q[68],q[57]; +cu1(0.0007669903939428206) q[69],q[57]; +cu1(0.0003834951969714103) q[70],q[57]; +cu1(0.00019174759848570515) q[71],q[57]; +cu1(9.587379924285257e-05) q[72],q[57]; +cu1(4.7936899621426287e-05) q[73],q[57]; +cu1(2.3968449810713143e-05) q[74],q[57]; +cu1(1.1984224905356572e-05) q[75],q[57]; +cu1(5.992112452678286e-06) q[76],q[57]; +cu1(2.996056226339143e-06) q[77],q[57]; +cu1(1.4980281131695715e-06) q[78],q[57]; +cu1(7.490140565847857e-07) q[79],q[57]; +cu1(3.7450702829239286e-07) q[80],q[57]; +cu1(1.8725351414619643e-07) q[81],q[57]; +cu1(9.362675707309822e-08) q[82],q[57]; +cu1(4.681337853654911e-08) q[83],q[57]; +cu1(2.3406689268274554e-08) q[84],q[57]; +cu1(1.1703344634137277e-08) q[85],q[57]; +cu1(5.8516723170686385e-09) q[86],q[57]; +cu1(2.9258361585343192e-09) q[87],q[57]; +cu1(1.4629180792671596e-09) q[88],q[57]; +cu1(7.314590396335798e-10) q[89],q[57]; +h q[58]; +cu1(1.5707963267948966) q[59],q[58]; +cu1(0.7853981633974483) q[60],q[58]; +cu1(0.39269908169872414) q[61],q[58]; +cu1(0.19634954084936207) q[62],q[58]; +cu1(0.09817477042468103) q[63],q[58]; +cu1(0.04908738521234052) q[64],q[58]; +cu1(0.02454369260617026) q[65],q[58]; +cu1(0.01227184630308513) q[66],q[58]; +cu1(0.006135923151542565) q[67],q[58]; +cu1(0.0030679615757712823) q[68],q[58]; +cu1(0.0015339807878856412) q[69],q[58]; +cu1(0.0007669903939428206) q[70],q[58]; +cu1(0.0003834951969714103) q[71],q[58]; +cu1(0.00019174759848570515) q[72],q[58]; +cu1(9.587379924285257e-05) q[73],q[58]; +cu1(4.7936899621426287e-05) q[74],q[58]; +cu1(2.3968449810713143e-05) q[75],q[58]; +cu1(1.1984224905356572e-05) q[76],q[58]; +cu1(5.992112452678286e-06) q[77],q[58]; +cu1(2.996056226339143e-06) q[78],q[58]; +cu1(1.4980281131695715e-06) q[79],q[58]; +cu1(7.490140565847857e-07) q[80],q[58]; +cu1(3.7450702829239286e-07) q[81],q[58]; +cu1(1.8725351414619643e-07) q[82],q[58]; +cu1(9.362675707309822e-08) q[83],q[58]; +cu1(4.681337853654911e-08) q[84],q[58]; +cu1(2.3406689268274554e-08) q[85],q[58]; +cu1(1.1703344634137277e-08) q[86],q[58]; +cu1(5.8516723170686385e-09) q[87],q[58]; +cu1(2.9258361585343192e-09) q[88],q[58]; +cu1(1.4629180792671596e-09) q[89],q[58]; +h q[59]; +cu1(1.5707963267948966) q[60],q[59]; +cu1(0.7853981633974483) q[61],q[59]; +cu1(0.39269908169872414) q[62],q[59]; +cu1(0.19634954084936207) q[63],q[59]; +cu1(0.09817477042468103) q[64],q[59]; +cu1(0.04908738521234052) q[65],q[59]; +cu1(0.02454369260617026) q[66],q[59]; +cu1(0.01227184630308513) q[67],q[59]; +cu1(0.006135923151542565) q[68],q[59]; +cu1(0.0030679615757712823) q[69],q[59]; +cu1(0.0015339807878856412) q[70],q[59]; +cu1(0.0007669903939428206) q[71],q[59]; +cu1(0.0003834951969714103) q[72],q[59]; +cu1(0.00019174759848570515) q[73],q[59]; +cu1(9.587379924285257e-05) q[74],q[59]; +cu1(4.7936899621426287e-05) q[75],q[59]; +cu1(2.3968449810713143e-05) q[76],q[59]; +cu1(1.1984224905356572e-05) q[77],q[59]; +cu1(5.992112452678286e-06) q[78],q[59]; +cu1(2.996056226339143e-06) q[79],q[59]; +cu1(1.4980281131695715e-06) q[80],q[59]; +cu1(7.490140565847857e-07) q[81],q[59]; +cu1(3.7450702829239286e-07) q[82],q[59]; +cu1(1.8725351414619643e-07) q[83],q[59]; +cu1(9.362675707309822e-08) q[84],q[59]; +cu1(4.681337853654911e-08) q[85],q[59]; +cu1(2.3406689268274554e-08) q[86],q[59]; +cu1(1.1703344634137277e-08) q[87],q[59]; +cu1(5.8516723170686385e-09) q[88],q[59]; +cu1(2.9258361585343192e-09) q[89],q[59]; +h q[60]; +cu1(1.5707963267948966) q[61],q[60]; +cu1(0.7853981633974483) q[62],q[60]; +cu1(0.39269908169872414) q[63],q[60]; +cu1(0.19634954084936207) q[64],q[60]; +cu1(0.09817477042468103) q[65],q[60]; +cu1(0.04908738521234052) q[66],q[60]; +cu1(0.02454369260617026) q[67],q[60]; +cu1(0.01227184630308513) q[68],q[60]; +cu1(0.006135923151542565) q[69],q[60]; +cu1(0.0030679615757712823) q[70],q[60]; +cu1(0.0015339807878856412) q[71],q[60]; +cu1(0.0007669903939428206) q[72],q[60]; +cu1(0.0003834951969714103) q[73],q[60]; +cu1(0.00019174759848570515) q[74],q[60]; +cu1(9.587379924285257e-05) q[75],q[60]; +cu1(4.7936899621426287e-05) q[76],q[60]; +cu1(2.3968449810713143e-05) q[77],q[60]; +cu1(1.1984224905356572e-05) q[78],q[60]; +cu1(5.992112452678286e-06) q[79],q[60]; +cu1(2.996056226339143e-06) q[80],q[60]; +cu1(1.4980281131695715e-06) q[81],q[60]; +cu1(7.490140565847857e-07) q[82],q[60]; +cu1(3.7450702829239286e-07) q[83],q[60]; +cu1(1.8725351414619643e-07) q[84],q[60]; +cu1(9.362675707309822e-08) q[85],q[60]; +cu1(4.681337853654911e-08) q[86],q[60]; +cu1(2.3406689268274554e-08) q[87],q[60]; +cu1(1.1703344634137277e-08) q[88],q[60]; +cu1(5.8516723170686385e-09) q[89],q[60]; +h q[61]; +cu1(1.5707963267948966) q[62],q[61]; +cu1(0.7853981633974483) q[63],q[61]; +cu1(0.39269908169872414) q[64],q[61]; +cu1(0.19634954084936207) q[65],q[61]; +cu1(0.09817477042468103) q[66],q[61]; +cu1(0.04908738521234052) q[67],q[61]; +cu1(0.02454369260617026) q[68],q[61]; +cu1(0.01227184630308513) q[69],q[61]; +cu1(0.006135923151542565) q[70],q[61]; +cu1(0.0030679615757712823) q[71],q[61]; +cu1(0.0015339807878856412) q[72],q[61]; +cu1(0.0007669903939428206) q[73],q[61]; +cu1(0.0003834951969714103) q[74],q[61]; +cu1(0.00019174759848570515) q[75],q[61]; +cu1(9.587379924285257e-05) q[76],q[61]; +cu1(4.7936899621426287e-05) q[77],q[61]; +cu1(2.3968449810713143e-05) q[78],q[61]; +cu1(1.1984224905356572e-05) q[79],q[61]; +cu1(5.992112452678286e-06) q[80],q[61]; +cu1(2.996056226339143e-06) q[81],q[61]; +cu1(1.4980281131695715e-06) q[82],q[61]; +cu1(7.490140565847857e-07) q[83],q[61]; +cu1(3.7450702829239286e-07) q[84],q[61]; +cu1(1.8725351414619643e-07) q[85],q[61]; +cu1(9.362675707309822e-08) q[86],q[61]; +cu1(4.681337853654911e-08) q[87],q[61]; +cu1(2.3406689268274554e-08) q[88],q[61]; +cu1(1.1703344634137277e-08) q[89],q[61]; +h q[62]; +cu1(1.5707963267948966) q[63],q[62]; +cu1(0.7853981633974483) q[64],q[62]; +cu1(0.39269908169872414) q[65],q[62]; +cu1(0.19634954084936207) q[66],q[62]; +cu1(0.09817477042468103) q[67],q[62]; +cu1(0.04908738521234052) q[68],q[62]; +cu1(0.02454369260617026) q[69],q[62]; +cu1(0.01227184630308513) q[70],q[62]; +cu1(0.006135923151542565) q[71],q[62]; +cu1(0.0030679615757712823) q[72],q[62]; +cu1(0.0015339807878856412) q[73],q[62]; +cu1(0.0007669903939428206) q[74],q[62]; +cu1(0.0003834951969714103) q[75],q[62]; +cu1(0.00019174759848570515) q[76],q[62]; +cu1(9.587379924285257e-05) q[77],q[62]; +cu1(4.7936899621426287e-05) q[78],q[62]; +cu1(2.3968449810713143e-05) q[79],q[62]; +cu1(1.1984224905356572e-05) q[80],q[62]; +cu1(5.992112452678286e-06) q[81],q[62]; +cu1(2.996056226339143e-06) q[82],q[62]; +cu1(1.4980281131695715e-06) q[83],q[62]; +cu1(7.490140565847857e-07) q[84],q[62]; +cu1(3.7450702829239286e-07) q[85],q[62]; +cu1(1.8725351414619643e-07) q[86],q[62]; +cu1(9.362675707309822e-08) q[87],q[62]; +cu1(4.681337853654911e-08) q[88],q[62]; +cu1(2.3406689268274554e-08) q[89],q[62]; +h q[63]; +cu1(1.5707963267948966) q[64],q[63]; +cu1(0.7853981633974483) q[65],q[63]; +cu1(0.39269908169872414) q[66],q[63]; +cu1(0.19634954084936207) q[67],q[63]; +cu1(0.09817477042468103) q[68],q[63]; +cu1(0.04908738521234052) q[69],q[63]; +cu1(0.02454369260617026) q[70],q[63]; +cu1(0.01227184630308513) q[71],q[63]; +cu1(0.006135923151542565) q[72],q[63]; +cu1(0.0030679615757712823) q[73],q[63]; +cu1(0.0015339807878856412) q[74],q[63]; +cu1(0.0007669903939428206) q[75],q[63]; +cu1(0.0003834951969714103) q[76],q[63]; +cu1(0.00019174759848570515) q[77],q[63]; +cu1(9.587379924285257e-05) q[78],q[63]; +cu1(4.7936899621426287e-05) q[79],q[63]; +cu1(2.3968449810713143e-05) q[80],q[63]; +cu1(1.1984224905356572e-05) q[81],q[63]; +cu1(5.992112452678286e-06) q[82],q[63]; +cu1(2.996056226339143e-06) q[83],q[63]; +cu1(1.4980281131695715e-06) q[84],q[63]; +cu1(7.490140565847857e-07) q[85],q[63]; +cu1(3.7450702829239286e-07) q[86],q[63]; +cu1(1.8725351414619643e-07) q[87],q[63]; +cu1(9.362675707309822e-08) q[88],q[63]; +cu1(4.681337853654911e-08) q[89],q[63]; +h q[64]; +cu1(1.5707963267948966) q[65],q[64]; +cu1(0.7853981633974483) q[66],q[64]; +cu1(0.39269908169872414) q[67],q[64]; +cu1(0.19634954084936207) q[68],q[64]; +cu1(0.09817477042468103) q[69],q[64]; +cu1(0.04908738521234052) q[70],q[64]; +cu1(0.02454369260617026) q[71],q[64]; +cu1(0.01227184630308513) q[72],q[64]; +cu1(0.006135923151542565) q[73],q[64]; +cu1(0.0030679615757712823) q[74],q[64]; +cu1(0.0015339807878856412) q[75],q[64]; +cu1(0.0007669903939428206) q[76],q[64]; +cu1(0.0003834951969714103) q[77],q[64]; +cu1(0.00019174759848570515) q[78],q[64]; +cu1(9.587379924285257e-05) q[79],q[64]; +cu1(4.7936899621426287e-05) q[80],q[64]; +cu1(2.3968449810713143e-05) q[81],q[64]; +cu1(1.1984224905356572e-05) q[82],q[64]; +cu1(5.992112452678286e-06) q[83],q[64]; +cu1(2.996056226339143e-06) q[84],q[64]; +cu1(1.4980281131695715e-06) q[85],q[64]; +cu1(7.490140565847857e-07) q[86],q[64]; +cu1(3.7450702829239286e-07) q[87],q[64]; +cu1(1.8725351414619643e-07) q[88],q[64]; +cu1(9.362675707309822e-08) q[89],q[64]; +h q[65]; +cu1(1.5707963267948966) q[66],q[65]; +cu1(0.7853981633974483) q[67],q[65]; +cu1(0.39269908169872414) q[68],q[65]; +cu1(0.19634954084936207) q[69],q[65]; +cu1(0.09817477042468103) q[70],q[65]; +cu1(0.04908738521234052) q[71],q[65]; +cu1(0.02454369260617026) q[72],q[65]; +cu1(0.01227184630308513) q[73],q[65]; +cu1(0.006135923151542565) q[74],q[65]; +cu1(0.0030679615757712823) q[75],q[65]; +cu1(0.0015339807878856412) q[76],q[65]; +cu1(0.0007669903939428206) q[77],q[65]; +cu1(0.0003834951969714103) q[78],q[65]; +cu1(0.00019174759848570515) q[79],q[65]; +cu1(9.587379924285257e-05) q[80],q[65]; +cu1(4.7936899621426287e-05) q[81],q[65]; +cu1(2.3968449810713143e-05) q[82],q[65]; +cu1(1.1984224905356572e-05) q[83],q[65]; +cu1(5.992112452678286e-06) q[84],q[65]; +cu1(2.996056226339143e-06) q[85],q[65]; +cu1(1.4980281131695715e-06) q[86],q[65]; +cu1(7.490140565847857e-07) q[87],q[65]; +cu1(3.7450702829239286e-07) q[88],q[65]; +cu1(1.8725351414619643e-07) q[89],q[65]; +h q[66]; +cu1(1.5707963267948966) q[67],q[66]; +cu1(0.7853981633974483) q[68],q[66]; +cu1(0.39269908169872414) q[69],q[66]; +cu1(0.19634954084936207) q[70],q[66]; +cu1(0.09817477042468103) q[71],q[66]; +cu1(0.04908738521234052) q[72],q[66]; +cu1(0.02454369260617026) q[73],q[66]; +cu1(0.01227184630308513) q[74],q[66]; +cu1(0.006135923151542565) q[75],q[66]; +cu1(0.0030679615757712823) q[76],q[66]; +cu1(0.0015339807878856412) q[77],q[66]; +cu1(0.0007669903939428206) q[78],q[66]; +cu1(0.0003834951969714103) q[79],q[66]; +cu1(0.00019174759848570515) q[80],q[66]; +cu1(9.587379924285257e-05) q[81],q[66]; +cu1(4.7936899621426287e-05) q[82],q[66]; +cu1(2.3968449810713143e-05) q[83],q[66]; +cu1(1.1984224905356572e-05) q[84],q[66]; +cu1(5.992112452678286e-06) q[85],q[66]; +cu1(2.996056226339143e-06) q[86],q[66]; +cu1(1.4980281131695715e-06) q[87],q[66]; +cu1(7.490140565847857e-07) q[88],q[66]; +cu1(3.7450702829239286e-07) q[89],q[66]; +h q[67]; +cu1(1.5707963267948966) q[68],q[67]; +cu1(0.7853981633974483) q[69],q[67]; +cu1(0.39269908169872414) q[70],q[67]; +cu1(0.19634954084936207) q[71],q[67]; +cu1(0.09817477042468103) q[72],q[67]; +cu1(0.04908738521234052) q[73],q[67]; +cu1(0.02454369260617026) q[74],q[67]; +cu1(0.01227184630308513) q[75],q[67]; +cu1(0.006135923151542565) q[76],q[67]; +cu1(0.0030679615757712823) q[77],q[67]; +cu1(0.0015339807878856412) q[78],q[67]; +cu1(0.0007669903939428206) q[79],q[67]; +cu1(0.0003834951969714103) q[80],q[67]; +cu1(0.00019174759848570515) q[81],q[67]; +cu1(9.587379924285257e-05) q[82],q[67]; +cu1(4.7936899621426287e-05) q[83],q[67]; +cu1(2.3968449810713143e-05) q[84],q[67]; +cu1(1.1984224905356572e-05) q[85],q[67]; +cu1(5.992112452678286e-06) q[86],q[67]; +cu1(2.996056226339143e-06) q[87],q[67]; +cu1(1.4980281131695715e-06) q[88],q[67]; +cu1(7.490140565847857e-07) q[89],q[67]; +h q[68]; +cu1(1.5707963267948966) q[69],q[68]; +cu1(0.7853981633974483) q[70],q[68]; +cu1(0.39269908169872414) q[71],q[68]; +cu1(0.19634954084936207) q[72],q[68]; +cu1(0.09817477042468103) q[73],q[68]; +cu1(0.04908738521234052) q[74],q[68]; +cu1(0.02454369260617026) q[75],q[68]; +cu1(0.01227184630308513) q[76],q[68]; +cu1(0.006135923151542565) q[77],q[68]; +cu1(0.0030679615757712823) q[78],q[68]; +cu1(0.0015339807878856412) q[79],q[68]; +cu1(0.0007669903939428206) q[80],q[68]; +cu1(0.0003834951969714103) q[81],q[68]; +cu1(0.00019174759848570515) q[82],q[68]; +cu1(9.587379924285257e-05) q[83],q[68]; +cu1(4.7936899621426287e-05) q[84],q[68]; +cu1(2.3968449810713143e-05) q[85],q[68]; +cu1(1.1984224905356572e-05) q[86],q[68]; +cu1(5.992112452678286e-06) q[87],q[68]; +cu1(2.996056226339143e-06) q[88],q[68]; +cu1(1.4980281131695715e-06) q[89],q[68]; +h q[69]; +cu1(1.5707963267948966) q[70],q[69]; +cu1(0.7853981633974483) q[71],q[69]; +cu1(0.39269908169872414) q[72],q[69]; +cu1(0.19634954084936207) q[73],q[69]; +cu1(0.09817477042468103) q[74],q[69]; +cu1(0.04908738521234052) q[75],q[69]; +cu1(0.02454369260617026) q[76],q[69]; +cu1(0.01227184630308513) q[77],q[69]; +cu1(0.006135923151542565) q[78],q[69]; +cu1(0.0030679615757712823) q[79],q[69]; +cu1(0.0015339807878856412) q[80],q[69]; +cu1(0.0007669903939428206) q[81],q[69]; +cu1(0.0003834951969714103) q[82],q[69]; +cu1(0.00019174759848570515) q[83],q[69]; +cu1(9.587379924285257e-05) q[84],q[69]; +cu1(4.7936899621426287e-05) q[85],q[69]; +cu1(2.3968449810713143e-05) q[86],q[69]; +cu1(1.1984224905356572e-05) q[87],q[69]; +cu1(5.992112452678286e-06) q[88],q[69]; +cu1(2.996056226339143e-06) q[89],q[69]; +h q[70]; +cu1(1.5707963267948966) q[71],q[70]; +cu1(0.7853981633974483) q[72],q[70]; +cu1(0.39269908169872414) q[73],q[70]; +cu1(0.19634954084936207) q[74],q[70]; +cu1(0.09817477042468103) q[75],q[70]; +cu1(0.04908738521234052) q[76],q[70]; +cu1(0.02454369260617026) q[77],q[70]; +cu1(0.01227184630308513) q[78],q[70]; +cu1(0.006135923151542565) q[79],q[70]; +cu1(0.0030679615757712823) q[80],q[70]; +cu1(0.0015339807878856412) q[81],q[70]; +cu1(0.0007669903939428206) q[82],q[70]; +cu1(0.0003834951969714103) q[83],q[70]; +cu1(0.00019174759848570515) q[84],q[70]; +cu1(9.587379924285257e-05) q[85],q[70]; +cu1(4.7936899621426287e-05) q[86],q[70]; +cu1(2.3968449810713143e-05) q[87],q[70]; +cu1(1.1984224905356572e-05) q[88],q[70]; +cu1(5.992112452678286e-06) q[89],q[70]; +h q[71]; +cu1(1.5707963267948966) q[72],q[71]; +cu1(0.7853981633974483) q[73],q[71]; +cu1(0.39269908169872414) q[74],q[71]; +cu1(0.19634954084936207) q[75],q[71]; +cu1(0.09817477042468103) q[76],q[71]; +cu1(0.04908738521234052) q[77],q[71]; +cu1(0.02454369260617026) q[78],q[71]; +cu1(0.01227184630308513) q[79],q[71]; +cu1(0.006135923151542565) q[80],q[71]; +cu1(0.0030679615757712823) q[81],q[71]; +cu1(0.0015339807878856412) q[82],q[71]; +cu1(0.0007669903939428206) q[83],q[71]; +cu1(0.0003834951969714103) q[84],q[71]; +cu1(0.00019174759848570515) q[85],q[71]; +cu1(9.587379924285257e-05) q[86],q[71]; +cu1(4.7936899621426287e-05) q[87],q[71]; +cu1(2.3968449810713143e-05) q[88],q[71]; +cu1(1.1984224905356572e-05) q[89],q[71]; +h q[72]; +cu1(1.5707963267948966) q[73],q[72]; +cu1(0.7853981633974483) q[74],q[72]; +cu1(0.39269908169872414) q[75],q[72]; +cu1(0.19634954084936207) q[76],q[72]; +cu1(0.09817477042468103) q[77],q[72]; +cu1(0.04908738521234052) q[78],q[72]; +cu1(0.02454369260617026) q[79],q[72]; +cu1(0.01227184630308513) q[80],q[72]; +cu1(0.006135923151542565) q[81],q[72]; +cu1(0.0030679615757712823) q[82],q[72]; +cu1(0.0015339807878856412) q[83],q[72]; +cu1(0.0007669903939428206) q[84],q[72]; +cu1(0.0003834951969714103) q[85],q[72]; +cu1(0.00019174759848570515) q[86],q[72]; +cu1(9.587379924285257e-05) q[87],q[72]; +cu1(4.7936899621426287e-05) q[88],q[72]; +cu1(2.3968449810713143e-05) q[89],q[72]; +h q[73]; +cu1(1.5707963267948966) q[74],q[73]; +cu1(0.7853981633974483) q[75],q[73]; +cu1(0.39269908169872414) q[76],q[73]; +cu1(0.19634954084936207) q[77],q[73]; +cu1(0.09817477042468103) q[78],q[73]; +cu1(0.04908738521234052) q[79],q[73]; +cu1(0.02454369260617026) q[80],q[73]; +cu1(0.01227184630308513) q[81],q[73]; +cu1(0.006135923151542565) q[82],q[73]; +cu1(0.0030679615757712823) q[83],q[73]; +cu1(0.0015339807878856412) q[84],q[73]; +cu1(0.0007669903939428206) q[85],q[73]; +cu1(0.0003834951969714103) q[86],q[73]; +cu1(0.00019174759848570515) q[87],q[73]; +cu1(9.587379924285257e-05) q[88],q[73]; +cu1(4.7936899621426287e-05) q[89],q[73]; +h q[74]; +cu1(1.5707963267948966) q[75],q[74]; +cu1(0.7853981633974483) q[76],q[74]; +cu1(0.39269908169872414) q[77],q[74]; +cu1(0.19634954084936207) q[78],q[74]; +cu1(0.09817477042468103) q[79],q[74]; +cu1(0.04908738521234052) q[80],q[74]; +cu1(0.02454369260617026) q[81],q[74]; +cu1(0.01227184630308513) q[82],q[74]; +cu1(0.006135923151542565) q[83],q[74]; +cu1(0.0030679615757712823) q[84],q[74]; +cu1(0.0015339807878856412) q[85],q[74]; +cu1(0.0007669903939428206) q[86],q[74]; +cu1(0.0003834951969714103) q[87],q[74]; +cu1(0.00019174759848570515) q[88],q[74]; +cu1(9.587379924285257e-05) q[89],q[74]; +h q[75]; +cu1(1.5707963267948966) q[76],q[75]; +cu1(0.7853981633974483) q[77],q[75]; +cu1(0.39269908169872414) q[78],q[75]; +cu1(0.19634954084936207) q[79],q[75]; +cu1(0.09817477042468103) q[80],q[75]; +cu1(0.04908738521234052) q[81],q[75]; +cu1(0.02454369260617026) q[82],q[75]; +cu1(0.01227184630308513) q[83],q[75]; +cu1(0.006135923151542565) q[84],q[75]; +cu1(0.0030679615757712823) q[85],q[75]; +cu1(0.0015339807878856412) q[86],q[75]; +cu1(0.0007669903939428206) q[87],q[75]; +cu1(0.0003834951969714103) q[88],q[75]; +cu1(0.00019174759848570515) q[89],q[75]; +h q[76]; +cu1(1.5707963267948966) q[77],q[76]; +cu1(0.7853981633974483) q[78],q[76]; +cu1(0.39269908169872414) q[79],q[76]; +cu1(0.19634954084936207) q[80],q[76]; +cu1(0.09817477042468103) q[81],q[76]; +cu1(0.04908738521234052) q[82],q[76]; +cu1(0.02454369260617026) q[83],q[76]; +cu1(0.01227184630308513) q[84],q[76]; +cu1(0.006135923151542565) q[85],q[76]; +cu1(0.0030679615757712823) q[86],q[76]; +cu1(0.0015339807878856412) q[87],q[76]; +cu1(0.0007669903939428206) q[88],q[76]; +cu1(0.0003834951969714103) q[89],q[76]; +h q[77]; +cu1(1.5707963267948966) q[78],q[77]; +cu1(0.7853981633974483) q[79],q[77]; +cu1(0.39269908169872414) q[80],q[77]; +cu1(0.19634954084936207) q[81],q[77]; +cu1(0.09817477042468103) q[82],q[77]; +cu1(0.04908738521234052) q[83],q[77]; +cu1(0.02454369260617026) q[84],q[77]; +cu1(0.01227184630308513) q[85],q[77]; +cu1(0.006135923151542565) q[86],q[77]; +cu1(0.0030679615757712823) q[87],q[77]; +cu1(0.0015339807878856412) q[88],q[77]; +cu1(0.0007669903939428206) q[89],q[77]; +h q[78]; +cu1(1.5707963267948966) q[79],q[78]; +cu1(0.7853981633974483) q[80],q[78]; +cu1(0.39269908169872414) q[81],q[78]; +cu1(0.19634954084936207) q[82],q[78]; +cu1(0.09817477042468103) q[83],q[78]; +cu1(0.04908738521234052) q[84],q[78]; +cu1(0.02454369260617026) q[85],q[78]; +cu1(0.01227184630308513) q[86],q[78]; +cu1(0.006135923151542565) q[87],q[78]; +cu1(0.0030679615757712823) q[88],q[78]; +cu1(0.0015339807878856412) q[89],q[78]; +h q[79]; +cu1(1.5707963267948966) q[80],q[79]; +cu1(0.7853981633974483) q[81],q[79]; +cu1(0.39269908169872414) q[82],q[79]; +cu1(0.19634954084936207) q[83],q[79]; +cu1(0.09817477042468103) q[84],q[79]; +cu1(0.04908738521234052) q[85],q[79]; +cu1(0.02454369260617026) q[86],q[79]; +cu1(0.01227184630308513) q[87],q[79]; +cu1(0.006135923151542565) q[88],q[79]; +cu1(0.0030679615757712823) q[89],q[79]; +h q[80]; +cu1(1.5707963267948966) q[81],q[80]; +cu1(0.7853981633974483) q[82],q[80]; +cu1(0.39269908169872414) q[83],q[80]; +cu1(0.19634954084936207) q[84],q[80]; +cu1(0.09817477042468103) q[85],q[80]; +cu1(0.04908738521234052) q[86],q[80]; +cu1(0.02454369260617026) q[87],q[80]; +cu1(0.01227184630308513) q[88],q[80]; +cu1(0.006135923151542565) q[89],q[80]; +h q[81]; +cu1(1.5707963267948966) q[82],q[81]; +cu1(0.7853981633974483) q[83],q[81]; +cu1(0.39269908169872414) q[84],q[81]; +cu1(0.19634954084936207) q[85],q[81]; +cu1(0.09817477042468103) q[86],q[81]; +cu1(0.04908738521234052) q[87],q[81]; +cu1(0.02454369260617026) q[88],q[81]; +cu1(0.01227184630308513) q[89],q[81]; +h q[82]; +cu1(1.5707963267948966) q[83],q[82]; +cu1(0.7853981633974483) q[84],q[82]; +cu1(0.39269908169872414) q[85],q[82]; +cu1(0.19634954084936207) q[86],q[82]; +cu1(0.09817477042468103) q[87],q[82]; +cu1(0.04908738521234052) q[88],q[82]; +cu1(0.02454369260617026) q[89],q[82]; +h q[83]; +cu1(1.5707963267948966) q[84],q[83]; +cu1(0.7853981633974483) q[85],q[83]; +cu1(0.39269908169872414) q[86],q[83]; +cu1(0.19634954084936207) q[87],q[83]; +cu1(0.09817477042468103) q[88],q[83]; +cu1(0.04908738521234052) q[89],q[83]; +h q[84]; +cu1(1.5707963267948966) q[85],q[84]; +cu1(0.7853981633974483) q[86],q[84]; +cu1(0.39269908169872414) q[87],q[84]; +cu1(0.19634954084936207) q[88],q[84]; +cu1(0.09817477042468103) q[89],q[84]; +h q[85]; +cu1(1.5707963267948966) q[86],q[85]; +cu1(0.7853981633974483) q[87],q[85]; +cu1(0.39269908169872414) q[88],q[85]; +cu1(0.19634954084936207) q[89],q[85]; +h q[86]; +cu1(1.5707963267948966) q[87],q[86]; +cu1(0.7853981633974483) q[88],q[86]; +cu1(0.39269908169872414) q[89],q[86]; +h q[87]; +cu1(1.5707963267948966) q[88],q[87]; +cu1(0.7853981633974483) q[89],q[87]; +h q[88]; +cu1(1.5707963267948966) q[89],q[88]; +h q[89]; diff --git a/QASM_files/qft_nativegates_quantinuum_qiskit_opt3_6.qasm b/QASM_files/qft_nativegates_quantinuum_qiskit_opt3_6.qasm new file mode 100644 index 0000000..c428abf --- /dev/null +++ b/QASM_files/qft_nativegates_quantinuum_qiskit_opt3_6.qasm @@ -0,0 +1,18 @@ +// Benchmark was created by MQT Bench on 2023-06-29 +// For more information about MQT Bench, please visit https://www.cda.cit.tum.de/mqtbench/ +// MQT Bench version: v1.0.0 +// Qiskit version: {'qiskit-terra': '0.24.1', 'qiskit-aer': '0.12.0', 'qiskit-ignis': None, 'qiskit-ibmq-provider': '0.20.2', 'qiskit': '0.43.1', 'qiskit-nature': '0.6.2', 'qiskit-finance': '0.3.4', 'qiskit-optimization': '0.5.0', 'qiskit-machine-learning': '0.6.1'} +// Used Gate Set: ['rzz', 'rz', 'ry', 'rx', 'measure'] + +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[6]; +rx(pi) q[4]; +rz(-14.18625432636641) q[5]; +rzz(pi/2) q[5],q[4]; +ry(-pi/4) q[4]; +rz(-pi/2) q[4]; +rzz(pi/2) q[5],q[4]; +ry(pi/4) q[4]; +rz(-9.522952731194058) q[4]; +ry(-pi/8) q[3]; diff --git a/QASM_files/qft_nativegates_quantinuum_tket_3.qasm b/QASM_files/qft_nativegates_quantinuum_tket_3.qasm new file mode 100644 index 0000000..727cdea --- /dev/null +++ b/QASM_files/qft_nativegates_quantinuum_tket_3.qasm @@ -0,0 +1,67 @@ +// Benchmark was created by MQT Bench on 2023-06-29 +// For more information about MQT Bench, please visit https://www.cda.cit.tum.de/mqtbench/ +// MQT Bench version: v1.0.0 +// TKET version: 1.16.0 +// Used Gate Set: ['rz', 'ry', 'rx', 'rzz', 'measure'] + +OPENQASM 2.0; +include "qelib1.inc"; + +qreg q[3]; +creg c[3]; +creg meas[3]; +rz(0.8750000000000009*pi) q[0]; +rx(1.5*pi) q[1]; +rz(1.0*pi) q[2]; +rx(2.5*pi) q[0]; +rz(1.5*pi) q[1]; +rx(1.25*pi) q[2]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[0]; +rx(0.5*pi) q[1]; +rx(0.5*pi) q[2]; +rx(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[0]; +rzz(0.25*pi) q[2],q[1]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rx(0.5*pi) q[1]; +rx(0.5*pi) q[2]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rz(3.5*pi) q[1]; +rz(0.5*pi) q[2]; +rx(0.5*pi) q[1]; +rx(0.5*pi) q[2]; +rz(1.75*pi) q[1]; +rz(0.5*pi) q[2]; +rzz(0.125*pi) q[2],q[0]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[0]; +rx(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rx(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rx(0.5*pi) q[2]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[0]; +rz(3.5*pi) q[2]; +rx(0.5*pi) q[0]; +rx(0.5*pi) q[2]; +rz(0.5*pi) q[0]; +rz(2.1249999999999996*pi) q[2]; +rzz(0.25*pi) q[1],q[0]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rx(0.5*pi) q[0]; +rx(0.5*pi) q[1]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rz(3.5*pi) q[1]; +rx(0.5*pi) q[1]; +rz(3.75*pi) q[1]; diff --git a/QASM_files/qft_nativegates_quantinuum_tket_3_short.qasm b/QASM_files/qft_nativegates_quantinuum_tket_3_short.qasm new file mode 100644 index 0000000..f7f1957 --- /dev/null +++ b/QASM_files/qft_nativegates_quantinuum_tket_3_short.qasm @@ -0,0 +1,33 @@ +// Benchmark was created by MQT Bench on 2023-06-29 +// For more information about MQT Bench, please visit https://www.cda.cit.tum.de/mqtbench/ +// MQT Bench version: v1.0.0 +// TKET version: 1.16.0 +// Used Gate Set: ['rz', 'ry', 'rx', 'rzz', 'measure'] + +OPENQASM 2.0; +include "qelib1.inc"; + +qreg q[3]; +creg c[3]; +creg meas[3]; +rz(0.8750000000000009*pi) q[0]; +rx(1.5*pi) q[1]; +rz(1.0*pi) q[2]; +rx(2.5*pi) q[0]; +rz(1.5*pi) q[1]; +rx(1.25*pi) q[2]; +rz(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[0]; +rx(0.5*pi) q[1]; +rx(0.5*pi) q[2]; +rx(0.5*pi) q[0]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rz(0.5*pi) q[0]; +rzz(0.25*pi) q[2],q[1]; +rz(0.5*pi) q[1]; +rz(0.5*pi) q[2]; +rx(0.5*pi) q[1]; +rx(0.5*pi) q[2]; diff --git a/algorithms_heuristic/full_register_access_06.json b/algorithms_heuristic/full_register_access_06.json new file mode 100644 index 0000000..1005b4a --- /dev/null +++ b/algorithms_heuristic/full_register_access_06.json @@ -0,0 +1,6 @@ +{ + "arch": [3, 3, 1, 1], + "max_timesteps": 50, + "num_ion_chains": 6, + "qu_alg": "QASM_files/full_register_access_06.qasm" +} diff --git a/algorithms_heuristic/full_register_access_50.json b/algorithms_heuristic/full_register_access_50.json new file mode 100644 index 0000000..0751c08 --- /dev/null +++ b/algorithms_heuristic/full_register_access_50.json @@ -0,0 +1,6 @@ +{ + "arch": [8, 8, 1, 1], + "max_timesteps": 50000, + "num_ion_chains": 50, + "qu_alg": "QASM_files/full_register_access_50.qasm" +} diff --git a/algorithms_heuristic/qft_24.json b/algorithms_heuristic/qft_24.json new file mode 100644 index 0000000..e53d3b4 --- /dev/null +++ b/algorithms_heuristic/qft_24.json @@ -0,0 +1,6 @@ +{ + "arch": [7, 7, 2, 2], + "max_timesteps": 50000, + "num_ion_chains": 24, + "qu_alg": "QASM_files/qft_24qubits.qasm" +} diff --git a/compilation.py b/compilation.py new file mode 100644 index 0000000..5abb262 --- /dev/null +++ b/compilation.py @@ -0,0 +1,84 @@ +import math + +from qiskit.dagcircuit import DAGDependency + + +def is_qasm_file(filename): + # Check if the file has a .qasm extension + if not filename.endswith(".qasm"): + return False + + try: + with open(filename) as file: + # Read the first line of the file + first_line = file.readline() + # Check if the first line contains the OPENQASM identifier + return "OPENQASM" in first_line + except OSError: + # If the file cannot be opened, return False + return False + + +def get_front_layer(dag): + """Get the front layer of the DAG.""" + front_layer = [] + for node in dag.get_nodes(): + # If a node has no predecessors, it's in the front layer + if not dag.direct_predecessors(node.node_id): + front_layer.append(node) + return front_layer + + +def remove_node(dag, node): + """Execute a node and update the DAG (remove the node and its edges).""" + # if dag.direct_successors(node.node_id): + # for successor in dag.direct_successors(node.node_id): + # dag._multi_graph.remove_edge(node.node_id, successor) + dag._multi_graph.remove_node(node.node_id) + + +def find_best_gate(front_layer, dist_map): + """Find the best gate to execute based on distance.""" + min_gate_cost = math.inf + for _i, gate_node in enumerate(front_layer): + qubit_indices = gate_node.qindices + gate_cost = max([dist_map[qs] for qs in qubit_indices]) + # if both ions of 2-qubit gate are in pz execute 2-qubit gate + if len(qubit_indices) == 2 and gate_cost == 0: + return gate_node + if gate_cost < min_gate_cost: + min_gate_cost = gate_cost + best_gate = gate_node + return best_gate + + +def manual_copy_dag(dag): + new_dag = DAGDependency() + + # Recreate quantum registers in the new DAG + for qreg in dag.qregs.values(): + new_dag.add_qreg(qreg) + + # Iterate over all operation nodes in the original DAG and copy them + for node in dag.get_nodes(): + new_dag.add_op_node(node.op, node.qargs, node.cargs) + + return new_dag + + +def update_sequence(dag, dist_map): + """Get the sequence of gates from the DAG. Creates a new DAG and removes all gates from it while creating the sequence.""" + working_dag = manual_copy_dag(dag) + sequence = [] + i = 0 + while True: + first_gates = get_front_layer(working_dag) + if not first_gates: + break + first_gate_to_excute = find_best_gate(first_gates, dist_map) + if i == 0: + first_node = first_gate_to_excute + i = 1 + remove_node(working_dag, first_gate_to_excute) + sequence.append(first_gate_to_excute.qindices) + return sequence, first_node diff --git a/run_heuristic.py b/run_heuristic.py new file mode 100644 index 0000000..604cc24 --- /dev/null +++ b/run_heuristic.py @@ -0,0 +1,332 @@ +import argparse +import json +import pathlib +import contextlib +import random +import networkx as nx +import numpy as np +from qiskit import QuantumCircuit +from qiskit.converters import circuit_to_dagdependency + +from compilation import is_qasm_file, manual_copy_dag, remove_node, update_sequence +from Cycles import GraphCreator, MemoryZone, get_idx_from_idc + +def create_starting_config(n_of_chains, graph, seed=None): + if seed is not None: + random.seed(seed) + random_starting_traps = random.sample(range(n_of_traps), (n_of_chains)) + starting_traps = [] + traps = [edges for edges in graph.edges() if graph.get_edge_data(edges[0], edges[1])["edge_type"] == "trap"] + for trap in random_starting_traps: + starting_traps.append(traps[trap]) + else: + starting_traps = [ + edges for edges in graph.edges() if graph.get_edge_data(edges[0], edges[1])["edge_type"] == "trap" + ][: n_of_chains] + number_of_registers = len(starting_traps) + + # place ions onto traps (ion0 on starting_trap0) + ion_chains = {} + for ion, idc in enumerate(starting_traps): + ion_chains[ion] = idc + + return ion_chains, number_of_registers + + +def preprocess(memorygrid, sequence): + need_rotate = [False] * len(sequence) + while sum(need_rotate) < len(sequence): + for i, rotate_chain in enumerate(sequence): + edge_idc = memorygrid.ion_chains[rotate_chain] + next_edge = memorygrid.find_next_edge(edge_idc) + state_edges_idx = memorygrid.get_state_idxs() + + if ( + memorygrid.have_common_junction_node(edge_idc, next_edge) is False + and get_idx_from_idc(memorygrid.idc_dict, next_edge) not in state_edges_idx + ): + memorygrid.ion_chains[rotate_chain] = next_edge + else: + need_rotate[i] = True + return memorygrid + + +def create_move_list(memorygrid, sequence, max_length=10): + """ + max_length: max length of move_list (if sequence is longer than max_length, only first max_length elements are considered) + """ + # unique sequence is sequence without repeating elements (for move_list and 2-qubit gates) + unique_sequence = [] + for seq_elem in sequence: + if seq_elem not in unique_sequence: + unique_sequence.append(seq_elem) + if len(unique_sequence) == max_length: + break + + path_length_sequence = {} + move_list = [] + for i, rotate_chain in enumerate(unique_sequence): + edge_idc = memorygrid.ion_chains[rotate_chain] + # TODO shortest path here maybe not optimal? + path_to_go = nx.shortest_path( + memorygrid.graph, + edge_idc[0], + memorygrid.graph_creator.processing_zone, + lambda _, __, edge_attr_dict: (edge_attr_dict["edge_type"] == "first_entry_connection") * 1e8 + 1, + ) + path_length_sequence[rotate_chain] = len(path_to_go) + + if i == 0 or sum( + np.array([path_length_sequence[rotate_chain]] * len(move_list)) + > np.array([path_length_sequence[chain] for chain in move_list]) + ) == len(move_list): + move_list.append(rotate_chain) + + # add exit edges (needed in rare cases, when chain was moved into exit but dag dependency changed right after that -> chain is in exit but not in move sequence) + for exit_connection_idc in iontrap.graph_creator.path_to_pz: + ion = iontrap.find_chain_in_edge(exit_connection_idc) + if ion is not None and ion not in move_list: + move_list.insert(0, ion) + + # get chains in all entry edges and place in front + # chain in entry must move out + chains_in_entry_connections = [] + for ion, chain_edge_idx in enumerate(memorygrid.get_state_idxs()): + if chain_edge_idx in memorygrid.graph_creator.path_from_pz_idxs: + if chain_edge_idx == get_idx_from_idc(memorygrid.idc_dict, memorygrid.graph_creator.entry_edge): + # place chain in entry at the end of move_list -> so later looping over list leads to chain in entry being first + chains_in_entry_connections.append(ion) + else: + chains_in_entry_connections.insert(0, ion) + + if len(chains_in_entry_connections) > 0: + for ion in chains_in_entry_connections: + with contextlib.suppress(Exception): + move_list.remove(ion) + move_list = [ion, *move_list] + + return move_list + + +def create_initial_sequence(distance_map, filename): + + with open(filename) as file: + first_line = file.readline() + print(first_line) + # assert file is a qasm file + assert is_qasm_file(filename), "The file is not a valid QASM file." + + # generate sequence + + qc = QuantumCircuit.from_qasm_file(filename) + dag_dep = circuit_to_dagdependency(qc) + + gate_ids, next_node = update_sequence(dag_dep, distance_map) + seq = [tuple(gate) for gate in gate_ids] + flat_seq = [item for sublist in seq for item in sublist] + + return seq, flat_seq, dag_dep, next_node + + +def run_simulation(iontrap, max_timesteps, seq, flat_seq, dag_dep, next_node, max_length): + time_in_pz_counter = 0 + next_gate_is_two_qubit_gate = len(seq[0]) == 2 + gate_execution_finished = True + + timestep = 0 + while timestep < max_timesteps: + rotate_entry = False + + # update state_idxs + iontrap.get_state_idxs() + + ######### PREPROCESS ######### + iontrap = preprocess(iontrap, flat_seq) + + iontrap.update_distance_map() + + ######### CREATE MOVE SEQUENCE ######### + move_list = create_move_list(iontrap, flat_seq, max_length=max_length) + + ######### CREATE CIRCLES ######### + ### create circles for all chains in move_list (dictionary with chain as key and circle_idcs as value) + chain_to_park = iontrap.find_chain_in_edge(iontrap.graph_creator.path_to_pz[-1]) + if iontrap.count_chains_in_parking() < iontrap.max_num_parking or gate_execution_finished: + parking_open = True + else: + parking_open = False + + all_circles = {} + stop_exit_edges = [] + # need to find next_edges before for bfs search of "out of entry move" + next_edges = {} + for rotate_chain in move_list: + edge_idc = iontrap.ion_chains[rotate_chain] + # if chain is needed again (is present in rest of sequence) -> move (only out of entry) towards exit instead of top left + towards = "exit" if rotate_chain in flat_seq[1:] else (0, 0) + next_edges[rotate_chain] = iontrap.find_next_edge(edge_idc, towards=towards) + + for rotate_chain in move_list: + edge_idc = iontrap.ion_chains[rotate_chain] + next_edge = next_edges[rotate_chain] + + # make edge_idc and next_edge consistent + edge_idc, next_edge = iontrap.find_ordered_edges(edge_idc, next_edge) + + # moves in pz + if get_idx_from_idc(iontrap.idc_dict, next_edge) in [ + *iontrap.graph_creator.path_to_pz_idxs, + get_idx_from_idc(iontrap.idc_dict, iontrap.graph_creator.parking_edge), + ]: + all_circles[rotate_chain] = [edge_idc, next_edge] + # block moves to pz if parking is full + if ( + get_idx_from_idc(iontrap.idc_dict, next_edge) + in [ + *iontrap.graph_creator.path_to_pz_idxs, + get_idx_from_idc(iontrap.idc_dict, iontrap.graph_creator.parking_edge), + ] + and parking_open is False + ) and (get_idx_from_idc(iontrap.idc_dict, next_edge) in stop_exit_edges or stop_exit_edges == []): + all_circles[rotate_chain] = [edge_idc, edge_idc] + # needed later for blocking moves to parking + stop_exit_edges.append(get_idx_from_idc(iontrap.idc_dict, edge_idc)) + + # moves without circle + # also if chain is moving out of entry connections (entry is handled in create_outer_circle) + elif ( + not iontrap.check_if_edge_is_filled(next_edge) + or get_idx_from_idc(iontrap.idc_dict, edge_idc) in iontrap.graph_creator.path_from_pz_idxs[:-1] + ): + all_circles[rotate_chain] = [edge_idc, next_edge] + + # moves with circle + else: + # create circle (deleted in create_outer_circle: in parking circle is a "stop move") + all_circles[rotate_chain] = iontrap.create_outer_circle(edge_idc, next_edge, next_edges.values()) + + # move chain out of parking edge if needed + chains_in_parking = iontrap.find_chains_in_parking() + # if pz full and no chain is moving out (not in state_idxs entry edge) but chain is moving in + if ( + iontrap.count_chains_in_parking() >= iontrap.max_num_parking + and gate_execution_finished + and chain_to_park is not None + ): + # find least important chain in parking edge + chain_to_move_out_of_pz = iontrap.find_least_import_chain_in_parking( + flat_seq, [*chains_in_parking, chain_to_park] + ) + if chain_to_move_out_of_pz != chain_to_park: + # move it to entry + rotate_entry = True + # change its path/circle to a stop move + all_circles[chain_to_move_out_of_pz] = [ + iontrap.graph_creator.path_from_pz[0], + iontrap.graph_creator.path_from_pz[0], + ] + + ######### FIND CIRCLES THAT CAN MOVE ######### + # find circles that can move while first seq ion is moving + nonfree_circles, free_circle_combs = iontrap.find_nonfree_and_free_circle_idxs(all_circles) + free_circle_seq_idxs = [move_list[0]] + for seq_circ in move_list[1:]: + nonfree = False + for mov_circ in free_circle_seq_idxs: + if (seq_circ, mov_circ) in nonfree_circles or (mov_circ, seq_circ) in nonfree_circles: + nonfree = True + break + if nonfree is False: + free_circle_seq_idxs.append(seq_circ) + + ######### ROTATE CIRCLES ######### + # need circles given in idxs for rotate function + free_circle_idxs = {} + for seq_idx in free_circle_seq_idxs: + free_circle_idxs[seq_idx] = [ + get_idx_from_idc(iontrap.idc_dict, edge_idc) for edge_idc in all_circles[seq_idx] + ] + # rotate chains + iontrap.rotate(free_circle_idxs[seq_idx]) + if rotate_entry: + iontrap.ion_chains[chain_to_move_out_of_pz] = iontrap.graph_creator.path_from_pz[0] + + ######### UPDATE SEQUENCE / PROCESS GATE ######### + gate = seq[0] + chains_in_parking = iontrap.find_chains_in_parking() + if sum((gate_element in chains_in_parking) for gate_element in gate) == len(gate): + gate_execution_finished = False + time_in_pz_counter += 1 + + print(f"\ntime step: {timestep}, gate {seq[0]} is executed,") + time_gate = time_2qubit_gate if next_gate_is_two_qubit_gate is True else time_1qubit_gate + + if time_in_pz_counter == time_gate: + ######### END IF SEQUENCE IS FINISHED ######### + if len(seq) == 1: + print("\nFull Sequence executed in %s time steps" % timestep) + break + + for _ in gate: + flat_seq.pop(0) + time_in_pz_counter = 0 + gate_execution_finished = True + + # update dag + remove_node(dag_dep, next_node) + dag_dep = manual_copy_dag(dag_dep) + + gate_ids, next_node = update_sequence(dag_dep, iontrap.distance_map) + seq = [tuple(gate) for gate in gate_ids] + flat_seq = [item for sublist in seq for item in sublist] + next_gate_is_two_qubit_gate = len(seq[0]) == 2 + + ######### SETUP NEW TIME STEP ######### + timestep += 1 + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("config_file", help="path to json config file") + #parser.add_argument("--plot", action="store_true", help="plot grid") + args = parser.parse_args() + + with pathlib.Path(args.config_file).open("r") as f: + config = json.load(f) + arch = config["arch"] + max_timesteps = config["max_timesteps"] + num_ion_chains = config["num_ion_chains"] + filename = config["qu_alg"] + + seed = 0 + m, n, v, h = arch + # create dummy graph + graph = GraphCreator(m, n, v, h).get_graph() + n_of_traps = len([trap for trap in graph.edges() if graph.get_edge_data(trap[0], trap[1])["edge_type"] == "trap"]) + ion_chains, number_of_registers = create_starting_config(num_ion_chains, graph, seed=seed) + + + print(f"arch: {arch}, seed: {seed}, registers: {number_of_registers}\n") + max_timesteps = 50000 + + time_2qubit_gate = 3 + time_1qubit_gate = 1 + max_chains_in_parking = 3 + + iontrap = MemoryZone( + m, + n, + v, + h, + ion_chains, + max_timesteps, + max_chains_in_parking, + time_2qubit_gate=time_2qubit_gate, + time_1qubit_gate=time_1qubit_gate, + ) + + iontrap.update_distance_map() + distance_map = iontrap.distance_map + + seq, flat_seq, dag_dep, next_node = create_initial_sequence(distance_map, filename) + run_simulation(iontrap, max_timesteps, seq, flat_seq, dag_dep, next_node, max_length=10) From 54edceee2f05eb6da74736724dd06eca3d49282d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=B6nberger?= <101660501+danielschoenberger@users.noreply.github.com> Date: Thu, 22 Feb 2024 22:38:12 +0100 Subject: [PATCH 2/2] Update README heuristic preliminary.md --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 786ab1b..4d91472 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ # MQT IonShuttler -This a tool for generating optimal shuttling schedules for grid-like memory zones inside trapped-ion quantum computers, based on the paper *Using Boolean Satisfiability for Exact Shuttling in Trapped-Ion Quantum Computers* by D. Schoenberger, S. Hillmich, M. Brandl, and R. Wille in ASP-DAC 2024. +This a tool for generating shuttling schedules for grid-like memory zones inside trapped-ion quantum computers. The tool supports optimal shuttling schedules for small architectures and also includes a preliminary option to produce heuristic shuttling schedules for large devices. The optimal solution is based on the paper *Using Boolean Satisfiability for Exact Shuttling in Trapped-Ion Quantum Computers* by D. Schoenberger, S. Hillmich, M. Brandl, and R. Wille in ASP-DAC 2024. The heuristic solution is based on the paper *Shuttling for Scalable Trapped-Ion Quantum Computers* by D. Schoenberger, S. Hillmich, M. Brandl, and R. Wille. MQT IonShuttler is part of the Munich Quantum Toolkit (MQT) developed by the [Chair for Design Automation](https://www.cda.cit.tum.de/) at the [Technical University of Munich](https://www.tum.de/). @@ -19,6 +19,7 @@ If you have any questions, feel free to contact us via [quantum.cda@xcit.tum.de] We strongly recommend using [virtual environments](https://docs.python.org/3/library/venv.html) to set up the tool and install the dependencies +# Exact Solution ```commandline $ python3 -m venv .venv $ . .venv/bin/activate @@ -34,6 +35,21 @@ An overview over all parameters is printed with the `--help` parameter. The architecture and the algorithm are specified in json files. You can find examples in the [`algorithms/`](algorithms/) folder. +# Heuristic Solution +```commandline +$ python3 -m venv .venv +$ . .venv/bin/activate +(.venv) $ pip install . +(.venv) $ python3 run_heuristic.py --help +[...] +(.venv) $ python3 run_heuristic.py algorithms_heuristic/qft_24.json +... +``` + +An overview over all parameters is printed with the `--help` parameter. +The architecture and the algorithm are specified in json files. +You can find examples in the [`algorithms_heuristic/`](algorithms_heuristic/) folder. + ## Acknowledgements The Munich Quantum Toolkit has been supported by the European