mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-02 16:52:25 -06:00 
			
		
		
		
	
		
			
	
	
		
			30 lines
		
	
	
	
		
			757 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
	
		
			757 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package bitutil
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Abs8 returns the absolute value of i (calculated without branching).
							 | 
						||
| 
								 | 
							
								func Abs8(i int8) int8 {
							 | 
						||
| 
								 | 
							
									const bits = 8
							 | 
						||
| 
								 | 
							
									u := uint64(i >> (bits - 1))
							 | 
						||
| 
								 | 
							
									return (i ^ int8(u)) + int8(u&1)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Abs16 returns the absolute value of i (calculated without branching).
							 | 
						||
| 
								 | 
							
								func Abs16(i int16) int16 {
							 | 
						||
| 
								 | 
							
									const bits = 16
							 | 
						||
| 
								 | 
							
									u := uint64(i >> (bits - 1))
							 | 
						||
| 
								 | 
							
									return (i ^ int16(u)) + int16(u&1)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Abs32 returns the absolute value of i (calculated without branching).
							 | 
						||
| 
								 | 
							
								func Abs32(i int32) int32 {
							 | 
						||
| 
								 | 
							
									const bits = 32
							 | 
						||
| 
								 | 
							
									u := uint64(i >> (bits - 1))
							 | 
						||
| 
								 | 
							
									return (i ^ int32(u)) + int32(u&1)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Abs64 returns the absolute value of i (calculated without branching).
							 | 
						||
| 
								 | 
							
								func Abs64(i int64) int64 {
							 | 
						||
| 
								 | 
							
									const bits = 64
							 | 
						||
| 
								 | 
							
									u := uint64(i >> (bits - 1))
							 | 
						||
| 
								 | 
							
									return (i ^ int64(u)) + int64(u&1)
							 | 
						||
| 
								 | 
							
								}
							 |