22 lines
		
	
	
		
			428 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			22 lines
		
	
	
		
			428 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include "taia.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* XXX: breaks tai encapsulation */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void taia_sub(struct taia *t, struct taia *u, struct taia *v)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  unsigned long unano = u->nano;
							 | 
						||
| 
								 | 
							
								  unsigned long uatto = u->atto;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t->sec.x = u->sec.x - v->sec.x;
							 | 
						||
| 
								 | 
							
								  t->nano = unano - v->nano;
							 | 
						||
| 
								 | 
							
								  t->atto = uatto - v->atto;
							 | 
						||
| 
								 | 
							
								  if (t->atto > uatto) {
							 | 
						||
| 
								 | 
							
								    t->atto += 1000000000UL;
							 | 
						||
| 
								 | 
							
								    --t->nano;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (t->nano > unano) {
							 | 
						||
| 
								 | 
							
								    t->nano += 1000000000UL;
							 | 
						||
| 
								 | 
							
								    --t->sec.x;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |