From 57d948319aeea1b1e35715968ccf53b3e133d5bd Mon Sep 17 00:00:00 2001
From: touka <touka@nopwd.lol>
Date: Fri, 5 Jul 2024 11:43:33 +0000
Subject: Added: nandb

Also with some fixes at nora and nanda.
---
 ld.mp | 119 +++++++++++++++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 85 insertions(+), 34 deletions(-)

(limited to 'ld.mp')

diff --git a/ld.mp b/ld.mp
index 18e2ab2..552b21c 100644
--- a/ld.mp
+++ b/ld.mp
@@ -33,6 +33,7 @@ enddef;
 def gate_and(expr gax, gay) =
 
 numeric GAh, GAl, GAs;
+
 GAh := 20;
 GAl := 10;
 GAe := gax+36;
@@ -79,27 +80,35 @@ enddef;
 outputtemplate := "nora.eps";
 beginfig(5)
 
-numeric wt, ht, il;
+numeric wt, ht, il, gs, gr, gc;
 
-wt = 50;
-ht = 15;
+ht = 30;
 il = 15;
+gs = il;
+gc = 7;
+gr = 10;
+wt = gr + 25;
 
-label.lft(btex $z$ etex, (0, 0));
-label.lft(btex $y$ etex, (0, 10));
-label.lft(btex $x$ etex, (0, 20));
-label.rt(btex $(x+y+z)'$ etex, (wt+il, 10));
+label.lft(btex $z$ etex, (0, 5));
+label.lft(btex $y$ etex, (0, 15));
+label.lft(btex $x$ etex, (0, 25));
 
-draw (0, 0)--(19, 0);
-draw (0, 10)--(22, 10);
-draw (0, 20)--(19, 20);
+draw (0, 5)--(il+4, 5);
+draw (0, 15)--(il+7, 15);
+draw (0, 25)--(il+4, 25);
 
-draw (15, -5)..(22, 10)..(15, 25);
-draw (15, -5)--(25, -5)..(26, -5)..(wt, 10);
-draw (15, 25)--(22, 25)..(23, 25)..(wt, 10);
-draw (wt, 10)..(wt+3, 10)..(wt, 10);
+draw (gs, 0)..(gs + gc, ht/2)..(gs, ht);
+draw (gs, 0)--(gs + gr, 0)..(gs + gr + 2, 0)..(gs + wt, ht/2);
+draw (gs, ht)--(gs + gr, ht)..(gs + gr + 2, ht)..(gs + wt, ht/2);
 
-draw (wt+3, 10)--(wt+il-3, 10);
+gs := gs + wt;
+draw (gs, ht/2)..(gs + 3, ht/2)..(gs, ht/2);
+
+il := il - 3;
+gs := gs + 3;
+draw (gs, ht/2)--(gs + il, ht/2);
+
+label.rt(btex $(x+y+z)'$ etex, (gs + il, ht/2));
 
 endfig;
 
@@ -108,16 +117,17 @@ endfig;
 outputtemplate := "norb.eps";
 beginfig(6)
 
-numeric wt, ht, il;
+numeric wt, ht, il, gs, gr;
 
-wt = 50;
 ht = 30;
 il = 12;
+gs = 15;
+gr = 20;
+wt = gr + 15;
 
 label.lft(btex $z$ etex, (0, 0));
 label.lft(btex $y$ etex, (0, 10));
 label.lft(btex $x$ etex, (0, 20));
-label.rt(btex $x'y'z'=(x+y+z)'$ etex, (wt+il, 10));
 
 draw (0, 0)--(il, 0);
 draw (il, 0)..(il+3, 0)..(il, 0);
@@ -126,12 +136,16 @@ draw (il, 10)..(il+3, 10)..(il, 10);
 draw (0, 20)--(il, 20);
 draw (il, 20)..(il+3, 20)..(il, 20);
 
+draw (gs, -5)--(gs, ht-5);
+draw (gs, -5)--(gs + gr, -5)..(gs + gr + 1, -5)..(gs + wt, 10);
+draw (gs, 25)--(gs + gr, 25)..(gs + gr + 1, 25)..(gs + wt, 10);
+
+gs := gs + wt;
 il := il + 3;
-draw (il, -5)--(il, ht-5);
-draw (il, -5)--(il+20, -5)..(il+21, -5)..(wt, 10);
-draw (il, 25)--(il+20, 25)..(il+21, 25)..(wt, 10);
+draw (gs, ht/2-5)--(gs + il, ht/2-5);
+
+label.rt(btex $x'y'z'=(x+y+z)'$ etex, (gs+il, ht/2-5));
 
-draw (wt, 10)--(wt+il, 10);
 endfig;
 
 % =================
@@ -139,12 +153,13 @@ endfig;
 outputtemplate := "nanda.eps";
 beginfig(7);
 
-numeric il, gas, ht, wt;
+numeric il, ht, wt, gs, gr;
 
-il = 10;
-gas = il;
 ht = 30;
-wt = 40;
+il = 15;
+gs = il;
+gr = 20;
+wt = gr + 15;
 
 label.lft(btex $z$ etex, (0, 5));
 label.lft(btex $y$ etex, (0, 15));
@@ -154,17 +169,53 @@ draw (0, 5)--(il, 5);
 draw (0, 15)--(il, 15);
 draw (0, 25)--(il, 25);
 
-draw (gas, 0)--(gas, ht);
-draw (gas, 0)--(gas + 25, 0)..(gas + wt, ht/2-1)..
-	(gas + 25, ht)--(gas, ht);
+draw (gs, 0)--(gs, ht);
+draw (gs, 0)--(gs + gr, 0)..(gs + wt, ht/2-1)..
+	(gs + gr, ht)--(gs, ht);
 
-gas := gas + wt;
-draw (gas, ht/2)..(gas + 3, ht/2)..(gas, ht/2);
-gas := gas + 3;
+gs := gs + wt;
+draw (gs, ht/2)..(gs + 3, ht/2)..(gs, ht/2);
+
+gs := gs + 3;
 il := il - 3;
-draw (gas, ht/2)--(gas + il, ht/2);
+draw (gs, ht/2)--(gs + il, ht/2);
+
+label.rt(btex $(xyz)'$ etex, (gs + il, ht/2));
+
+endfig;
+
+% =================
+
+outputtemplate := "nandb.eps";
+beginfig(8)
+
+numeric wt, ht, il, gs, gr, gc;
+
+ht = 30;
+il = 12;
+gs = il;
+gc = 7;
+gr = 10;
+wt = gr + 25;
+
+label.lft(btex $z$ etex, (0, 5));
+label.lft(btex $y$ etex, (0, 15));
+label.lft(btex $x$ etex, (0, 25));
+
+draw (0, 5)--(il+4, 5)..(il+4 + 3, 5)..(il+4, 5);
+draw (0, 15)--(il+7, 15)..(il+7 + 3, 15)..(il+7, 15);
+draw (0, 25)--(il+4, 25)..(il+4 + 3, 25)..(il+4, 25);
+
+gs := gs + 3;
+draw (gs, 0)..(gs + gc, ht/2)..(gs, ht);
+draw (gs, 0)--(gs + gr, 0)..(gs + gr + 2, 0)..(gs + wt, ht/2);
+draw (gs, ht)--(gs + gr, ht)..(gs + gr + 2, ht)..(gs + wt, ht/2);
+
+gs := gs + wt;
+il := il + 3;
+draw (gs, ht/2)--(gs + il, ht/2);
 
-label.rt(btex $(xyz)'$ etex, (gas + il, ht/2));
+label.rt(btex $x'+y'+z' = (xyz)'$ etex, (gs + il, ht/2));
 
 endfig;
 
-- 
cgit v1.2.3