29 lines
		
	
	
		
			757 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			29 lines
		
	
	
		
			757 B
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								USING: accessors kernel math math.functions combinators
							 | 
						||
| 
								 | 
							
								sequences sequences.private ;
							 | 
						||
| 
								 | 
							
								IN: sequences.complex-components
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								TUPLE: complex-components seq ;
							 | 
						||
| 
								 | 
							
								INSTANCE: complex-components sequence
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: <complex-components> ( sequence -- complex-components )
							 | 
						||
| 
								 | 
							
								    complex-components boa ; inline
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<PRIVATE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: complex-components@ ( n seq -- remainder n' seq' )
							 | 
						||
| 
								 | 
							
								    [ [ 1 bitand ] [ -1 shift ] bi ] [ seq>> ] bi* ; inline
							 | 
						||
| 
								 | 
							
								: complex-component ( remainder complex -- component )
							 | 
						||
| 
								 | 
							
								    swap {
							 | 
						||
| 
								 | 
							
								        { 0 [ real-part ] }
							 | 
						||
| 
								 | 
							
								        { 1 [ imaginary-part ] }
							 | 
						||
| 
								 | 
							
								    } case ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PRIVATE>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M: complex-components length
							 | 
						||
| 
								 | 
							
								    seq>> length 1 shift ;
							 | 
						||
| 
								 | 
							
								M: complex-components nth-unsafe
							 | 
						||
| 
								 | 
							
								    complex-components@ nth-unsafe complex-component ;
							 | 
						||
| 
								 | 
							
								M: complex-components set-nth-unsafe
							 | 
						||
| 
								 | 
							
								    immutable ;
							 |