
    0i?              
       J   d dl Z d dlZd dlmZ d dlZd dlmZm	Z	 dZ
 e j                  e j                         d:de j                  dede j                  fdZd;de j                  dede j                  fdZd:de j                  dede j                  fd	Zd<de j                  d
ede j                  fdZde j                  de j                  fdZd;de j                  dede j                  fdZ G d d      Zd=dededede	e   fdZd Zd Zedk(  r ed        ed        ed        ed        ed        edd      Zej=                  dd       Z ed!        ed"ed#   d    d$d%ed#   d&   d$d'        ed(ed)   d*        ed+        ed, ej@                  ed#   d&   d-z
        d.        ed/        e         ed0        ed1d2d34      Z! ed5 e"e!       d6        e#e!      D ](  \  Z$Z% ed7e$d&z    d8e%d   d    d9d%e%d   d&   d9d'       * yy)>    N)TupleListgox?sn_termsreturnc                     t        j                  d|dz   t         j                  d      }| j                         dkD  r| j	                  d      n| } ||  z  }t        j
                  |d      S )u   
    Compute ζ(s) = Σ n^(-s) for Re(s) > 1
    Uses Euler-Maclaurin for extension to critical strip.
    
    For gradient descent, we use a truncated series with analytic continuation.
       cpudtypedevicer   dim)torcharangefloat64r   	unsqueezesum)r   r   ntermss       r_z_zeros.pyzeta_seriesr      sY     	Q!5==GA557Q;BAA 1"IE99U##    c                 V   t        j                  t        j                  | j                  dz
        dk        r.t        j                  t        d      t         j                        S | j                  dkD  }d| z
  }t        ||      }d| z  t        j                  | dz
  z  z  t        j                  t        j                  | z  dz        z  }t        j                  t        j                  dt        j                  z        t         j                        |t        z  |z  z  }||z  |z  S )u   
    Compute ζ(s) in the critical strip 0 < Re(s) < 1
    Uses reflection formula: ζ(s) = 2^s * π^(s-1) * sin(πs/2) * Γ(1-s) * ζ(1-s)
    
    For s in critical strip, we compute ζ(1-s) where Re(1-s) > 1.
          ?ư>infr   r	      )r   anyabsrealtensorfloat
complex128zeta_series_generalnppisinsqrtEULER_GAMMA)r   r   region_masks_reflectedzeta_reflected	prefactor
gamma_terms          r   zeta_critical_stripr2   #   s     yy166C<(4/0||E%L0@0@AA &&3,K a%K )g>N 1ruuq1u~%		"%%!)a-(@@I bgga"%%i08H8HI[[fMfkvLvvJz!N22r   c                 n   t        | d      r| j                  nt        j                  d      }t        j                  d|dz   t        j                  |      }| j                         dk(  r| j                  d      } |j                  d      | j                  d       z  }t        j                  |d      S )z=
    General zeta computation with convergence handling.
    r   r
   r	   r   r   r   r   )hasattrr   r   r   r   r   r   r   )r   r   r   r   r   s        r   r'   r'   @   s     !H-QXX5<<3FFQ!5==HA 	uuw!|KKN KKOQ0E99U""r   Nc                 ~    | j                   }| j                  }|dz
  }t        j                  |dz  |dz  z   |z         S )uB  
    Loss based on Euler-like identity: x² + y² = -N
    Maps s = σ + it to x = σ - 0.5 (distance from critical line)
    and y = t (imaginary part).
    
    At zeros on the critical line: x = 0, so y² = -N → y = √N * i
    This means t = 0 for N=0, which doesn't help.
    
    Modified: Use Re(s) - 0.5 as x, Im(s) as y
    At critical line: x = 0, so we need y² = -N
    This forces Im(s) = 0 for zeros, which is wrong.
    
    New approach: Use the MAGNITUDE condition
    |ζ(s)|² should be zero at zeros
    But we want to encode the geometric constraint
          ?r    )r#   imagr   r"   )r   r5   sigmatxs        r   euler_identity_lossr<   V   sB    " FFE	A 	A 99QTAqD[1_%%r   c                 F    t        j                  | j                  dz
        S )z=
    Loss to push s toward the critical line Re(s) = 0.5
    r7   )r   r"   r#   )r   s    r   critical_line_lossr>   x   s     99QVVc\""r   c                 J    t        | |      }t        j                  |      dz  S )uC   
    Loss function: minimize |ζ(s)|²
    We want ζ(s) → 0
    r    )r2   r   r"   )r   r   zeta_vals      r   	zero_lossrA      s$    
 #1g.H99X!!r   c            	           e Zd ZdZddedefdZdej                  fdZdej                  de	fdZ
dd	ed
ede	fdZ	 	 ddeded	ede	fdZy)CCTZetaFinderz
    CCT-ODE Framework for finding Riemann Zeta zeros.
    
    Uses:
    - ODE tracking of the optimization trajectory
    - Conditional collapse detection
    - Euler identity as geometric constraint
    - Periodicity detection in loss landscape
    target_tlearning_ratec                     || _         || _        g | _        g | _        g | _        t        j                  d|gdt
        j                        | _        y )Nr7   T)requires_gradr   )	rD   lrentropy_historycollapse_history
trajectoryr   r$   r   r   )selfrD   rE   s      r   __init__zCCTZetaFinder.__init__   sG       " " sHoTWr   r   c                 b    t        j                  | j                  d   | j                  d         S )zEConvert the real optimization state [sigma, t] into a complex scalar.r   r	   )r   complexr   )rL   s    r   	complex_szCCTZetaFinder.complex_s   s#    }}TVVAYq	22r   lossc                    i }t        j                  |j                               }| j                  j	                  |       ||d<   t        | j                        dkD  r@| j                  d   | j                  d   z
  }| j                  j	                  |       ||d<   nd|d<   | j                  j	                  | j                  j                         j                         j                                |j                         |d<   | j                  d   j                         |d	<   | j                  d   j                         |d
<   |S )z&Track CCT metrics during optimization.H(T)r	   r      Δ Collapse        	   |ζ(s)|²r   Re(s)Im(s))mathlog1pitemrI   appendlenrJ   rK   r   detachnumpycopy)rL   rQ   metricsentropydelta_Hs        r   compute_cct_metricsz!CCTZetaFinder.compute_cct_metrics   s    **TYY[)##G,! t##$q(**2.1E1Eb1IIG!!((1%,GM"%(GM" 	tvv}}446;;=>#yy{66!9>>+66!9>>+r   use_euler_constraintuse_critical_linec                 ,   | j                         }t        |d      }|rt        |d      nt        j                  d      }|rt        |      nt        j                  d      }|d|z  z   d|z  z   }|j                          t        j                         5  | xj                  | j                  | j                  j                  z  z  c_        | j                  j                  j                          ddd       | j                  |      S # 1 sw Y   xY w)z+Single optimization step with CCT tracking.   r   rV   )r5   皙?g?N)rP   rA   r<   r   r$   r>   backwardno_gradr   rH   gradzero_re   )rL   rf   rg   	s_complex	loss_zero
loss_eulerloss_criticalrQ   s           r   stepzCCTZetaFinder.step   s    NN$	 i4	>R(c:X]XdXdehXi
9J*95PUP\P\]`Pa 3++d].BB 	]]_ 	 FFdgg++FFFKK	 
 ''--	  	 s   AD

D	max_stepstolc                 .   t        ddddddddddddd	ddd
d       t        d       t        |      D ]  }| j                  |      }|dz  dk(  r1t        |dd|d   dd|d   dd|d   dd|d	   dd|d
   d       |d   |k  sWt        d|        t        d| j                  d   j	                         dd| j                  d   j	                         dd        n | j                  j                         j                         t        | j                         d      j	                         t        j                  | j                        t        j                  | j                        t        j                  | j                        dS )z&Run CCT-ODE optimization to find zero.Stepz<6 rX   z<12rY   u   |ζ|²z<15rS   rU   zK---------------------------------------------------------------------------)rf      r   z<12.6frW   z<15.2ez<12.4fu   
✓ COLLAPSE DETECTED at step z  Zero found: s = .10f + r	   i2   rj   )zero
zeta_valuerK   rI   rJ   )printrangert   r   r\   r_   r`   r2   rP   r(   arrayrK   rI   rJ   )rL   ru   rv   rf   rt   rb   s         r   runzCCTZetaFinder.run   s    	1WSM73-q#as|STUbcfTghih)$ 	Dii5IiJGbyA~b	77#3F";1WW=Mf<UUV -f5Qwvv6NaPWXePfgmOnp q {#c)8?@*466!9>>+;D*ATVVAY^^EUVZD[[\]^	 FFMMO))+-dnn.>KPPR((4??3!xx(<(<= ")>)> ?
 	
r   N){Gz?)TT)  r   T)__name__
__module____qualname____doc__r%   rM   r   TensorrP   dictre   boolrt   intr    r   r   rC   rC      s    
X 
Xu 
X35<< 3  2. . .Y] ., 6:)-
S 
U 
"&
26
r   rC   start_tend_tstep_tc                    g }| }t        d       t        d       t        d       ||k  rt        d|d       t        |d      }|j                  dd	
      }|d   }|d   }t        j                  |      dk  rUd|d   cxk  rdk  rGn nDt        d|d   dd|d   dd       t        d|d       |j                  ||d	d       |dz  }n(t        dt        j                  |      dd       ||z  }||k  r|S )z
    Search for multiple zeros using CCT-ODE framework.
    
    Uses periodicity detection: zeros are spaced with specific pattern.
    Montgomery's conjecture: gap distribution follows GUE random matrix theory.
    Q
================================================================================z%CCT-ODE ZERO SEARCH IN CRITICAL STRIPP================================================================================u   
→ Searching near t = z.2fg{Gzt?rD   rE   i,  T)ru   rf   r   r   rk   g?r   g333333?u     ✓ ZERO FOUND: .8fr|   r	   r}   u       ζ(s) = .2e)r   zeta	convergedg      .@u     ✗ No zero found (|ζ| = ))r   rC   r   r(   r"   r]   )	r   r   r   zeros	current_tfinderresultr   r@   s	            r   search_zeros_cctr      s,    EI	-	
12	&M
e
))C9: 	G cE f~,'66(c!cDG&9c&9&tAwsm3tAwsm1EFL#/0LL !  I01A#0FaHII7 e
: Lr   c                  N   t        j                  ddd      } t        j                  ddd      }t        j                  | |      \  }}|d|z  z   }t        j                  |t              }t        |j                  d         D ]q  }t        |j                  d         D ]T  }t        j                  |||f   t        j                        }	 t        |d	      }	t        j                  |	      |||f<   V s t        j                  dd
d      \  }
}|d   }|j                  ||t        j                   |dz         d      }|j#                  dddd       |j%                  d       |j'                  d       |j)                  d       t        j*                  ||       |j-                          |d   }t        j.                  t        j                  | dz
              }|}|dd|f   }|j1                  ||       |j3                  dddd       |j%                  d       |j'                  d       |j)                  d       t        j4                          t        j6                  d d!"       t        j8                          |||fS #  t         j                  |||f<   Y xY w)#u(   Visualize |ζ(s)| in the critical strip.r   r	   d   r~      y              ?r   ri   rj   r    )      figsizeg|=)levelsr7   r--Critical Liner;   color	linestylelabelrX   rY   u"   log₁₀|ζ(s)| in Critical Strip)axNk-g333333?)yr   r   alphaz	Im(s) = tu   |ζ(0.5 + it)|zZeta Magnitude on Critical Linezzeta_cct_analysis.png   dpi)r(   linspacemeshgrid
zeros_liker%   r   shaper   r$   r&   r2   r"   nanpltsubplotscontourflog10axvline
set_xlabel
set_ylabel	set_titlecolorbarlegendargminplotaxhlinetight_layoutsavefigshow)sigma_ranget_range
sigma_gridt_grids_gridzeta_magnituder}   js_valr@   figaxesax1imax2idx_criticalt_slice
zeta_slices                     r   visualize_zeta_surfacer   )  s@    ++aC(Kkk!R%G[':J"v+%F ]]67N6<<?# .v||A' 	.ALL1U5E5EFE..ubA')vvh'7q!t$		.. Q73IC q'C	j&"((>E3I*JSU	VBKK#SDKHNN7NN7MM67LLJJL q'C99RVVK#$567LG<0JHHWj!KK!3#SK9NN;NN#$MM34KK'S1HHJv~--A.')vvq!t$s   'J

J$c                  F   t        d       t        d       t        d       t        dd      } | j                  dd	      }|d
   }|d   }t        |      dkD  rt	        j
                  |dddf         }t	        j
                  |dddf         }t	        j
                  |      }t        j                  ddd      \  }}|d   }	|	j                  |dddf   |dddf   dd       |	j                  dddd       |	j                  |d   |d   dddd        |	j                  |d!   |d"   d#dd$d%        |	j                  d&       |	j                  d'       |	j                  d(       |	j                          |d   }
|
j                  |dd       |
j                  d)       |
j                  d*       |
j                  d+       |d,   }|j                  |dd-df   |dd-df   ||t	        j                   t        |            d.d/       |j                  ddd0       |j                  d&       |j                  d'       |j                  d1       |d2   }|j                  t	        j"                  |      d3d       |j                  d)       |j                  d4       |j                  d5       t        j$                          t        j&                  d6d78       t        j(                          t        d9       t        d:       t        d;       t        d<       |S )=z
    Analyze the optimization trajectory as an ODE system.
    CCT View: The gradient descent is an ODE tracking entropy collapse.
    r   z6ODE-CCT ANALYSIS: Gradient Descent as Entropy Collapser   g      ,@r   r   r   :0yE>ru   rv   rK   rI   r   Nr   r	   r    )   
   r   )r   r   zb-)	linewidthr7   r   r   r   r   )r   r	   greenr   oStart)cr   markerr   )r   r   )r   r	   redr;   EndrX   rY   z(Optimization Trajectory in Complex Planerx   zH(T) (Entropy Proxy)z$Entropy Collapse During Optimization)r	   r   r   viridis)cmapr   )r;   r   r   zPhase Portrait (ds/dt))r	   r	   zr-z|dH/dt|zEntropy Rate of Changezode_cct_analysis.pngr   r   z
CCT Interpretation:u0     - Trajectory follows gradient of ζ(s) surfaceu2     - Entropy H(T) = log|ζ(s)|² collapses toward 0zE  - Periodicity: Check if trajectory oscillates (CCT cycle detection))r   rC   r   r^   r(   diffr   r   r   r   scatterr   r   r   r   quiverr   r"   r   r   r   )r   r   rK   rc   d_sigmad_t	d_entropyr   r   r   r   ax3ax4s                r   analyze_optimization_oder   c  s    
-	
BC	&M D=FZZ#4Z0F%J&'G :''*QT*+ggjA&'GGG$	 LLAx8	T 4jAqD!:ad#3TQGcOLJt$j&6'SQT\cdJu%z%'8ESQT\abww@A

 4j$!,v-.<= 4j

:crc1f%z#2#q&'9C3w<!8yPS 	 	Uc5ww./ 4j	"DA6vy!./*4
	
!"	
<=	
>?	
QRMr   __main__r   z CCT-ODE RIEMANN ZETA ZERO FINDERuA   Using Euler-like Identity: x² + y² = -N as geometric constraintz/
[TEST 1] Finding single zero near t = 14.13...g(\B,@r   r   r   r   r   z
Result:z  Found zero: s = r   r{   r|   r	   r}   u     ζ(s) value: r   r   z"  Known zero: s = 0.5 + 14.134725iz	  Error: g>٬D,@z.6fz8
[TEST 2] ODE-CCT Analysis of optimization trajectory...z%
[TEST 3] Searching multiple zeros...rV   g      I@g       @)r   r   r   z
Found z zerosz  Zero z: r   )r   )r~   )r   )r7   )&r   r`   r(   matplotlib.pyplotpyplotr   rZ   typingr   r   r,   set_default_dtyper   r   r   r   r2   r'   r%   r<   r>   rA   rC   r   r   r   r   r   r   r   r   r   r"   r   r^   	enumerater}   zr   r   r   <module>r      s            &$5<< $# $ $35<< 3# 3u|| 3:#5<< ## # #,&5<< &E &ELL &D#%,, #5<< #" " "U\\ "d
 d
V+e +E +5 +4PT: +d3.tEX z	&M	
,-	
MN	&M 

<=E>FZZ#4Z0F	I	vf~a06c&.:KD9QQR
ST	OF<05
67	.0	IfbffVF^A.:;C@
AB 

EF 

23SSAE	HSZL
'(%  C1!uBqvayoS33qABC7 r   