Code: Select all
/* Generated by DDTc v0.5
Solution is 12 x DG403
See www.ternary.info */
#include "ddt.h"
int ddt_sum(int f, DDT i1, DDT i2, DDT i3, DDT* o1, DDT* o2)
{
DDT r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14;
int f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14;
f1 = ddt_mux(f,i1,O,P,N,&r1);
if(f1 < 0) return f1;
f2 = ddt_mux(f,i1,P,N,O,&r2);
if(f2 < 0) return f2;
f3 = ddt_mux(f,i2,r1,r2,i1,&r3);
if(f3 < 0) return f3;
f4 = ddt_mux(f,i2,r2,i1,r1,&r4);
if(f4 < 0) return f4;
f5 = ddt_mux(f,i2,i1,r1,r2,&r5);
if(f5 < 0) return f5;
f6 = ddt_mux(f,i3,r3,r4,r5,&r6);
if(f6 < 0) return f6;
f7 = ddt_e21(f,i1,N,O,&r7);
if(f7 < 0) return f7;
f8 = ddt_e12(f,i1,N,O,&r8);
if(f8 < 0) return f8;
f9 = ddt_e21(f,i1,O,P,&r9);
if(f9 < 0) return f9;
f10 = ddt_e12(f,i1,O,P,&r10);
if(f10 < 0) return f10;
f11 = ddt_mux(f,i2,r7,r8,O,&r11);
if(f11 < 0) return f11;
f12 = ddt_mux(f,i2,r8,O,r9,&r12);
if(f12 < 0) return f12;
f13 = ddt_mux(f,i2,O,r9,r10,&r13);
if(f13 < 0) return f13;
f14 = ddt_mux(f,i3,r11,r12,r13,&r14);
if(f14 < 0) return f14;
if(o1) *o1 = r6;
if(o2) *o2 = r14;
return f1+f2+f3+f4+f5+f6+f7+f8+f9+f10+f11+f12+f13+f14;
}
P.S. Интересно, что этот сненерённый полный сумматор по сути повторяет троичный полный сумматор из вот этой статьи 1996 года: