---
name: "polardupablexpr"
section: "3"
platform: "linux"
package: "alliance"
version: "5.1.1-3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/polardupablexpr"
---

# polardupablexpr(3)

duplicates an expression and moves down the inverters.

## NAME

polardupablexpr - duplicates an expression and moves down the inverters.

## SYNOPSYS

```
#include "abl101.h"
chain_list ∗polardupablexpr( Expr, Polar )
  chain_list ∗Expr;
  int         Polar;
```

## PARAMETERS

- *Expr*

  Expression to modify.

- *Polar*

  Expression polarity.

## DESCRIPTION

**polardupablexpr** modifies *Expr* by moving down the inverters to the atomic level. **polardupablexpr** applies the Morgan's laws. If *Polar* is equal to ABL\_POLAR\_NEGATIVE  the function returns the modified expression after having complemented it.

## RETURN VALUE

**polardupablexpr** returns the modified expression.

## EXAMPLE

```
#include "abl101.h"
  chain_list ∗Expr1;
  chain_list ∗Expr2;
  Expr1 = createabloper( ABL_NOT );
  Expr2 = createabloper( ABL_NOT );
  addablhexpr( Expr1, createablatom( "a" ) );
  addablhexpr( Expr2, Expr1 );
  Expr1 = polardupablexpr( Expr2, ABL_POLAR_POSITIVE );
  /* displays  a */
  viewablexpr( Expr1, ABL_VIEW_VHDL );
```

## SEE ALSO

[**abl**(1)](/abl/1.md)
