Cuby can read geometry as z-matrix in a format similar to the one used in Gaussian. The values of the coordinates can be supplied either inline or using named variables. Here is an example (ethane molecule) using inline values

```
C
C 1 1.650
H 1 1.089 2 109.471
H 1 1.089 2 109.471 3 125.0
H 1 1.089 2 109.471 3 241.0
H 2 1.089 1 109.471 3 183.0
H 2 1.089 1 109.471 3 310.0
H 2 1.089 1 109.471 3 62.0
```

and using named variables (note that multiple coordinates are now represented by a single variable)

```
C
C 1 cc
H 1 hc 2 hcc
H 1 hc 2 hcc 3 dih4
H 1 hc 2 hcc 3 dih5
H 2 hc 1 hcc 3 dih6
H 2 hc 1 hcc 3 dih7
H 2 hc 1 hcc 3 dih8
cc 1.650000
hc 1.089000
hcc 109.471
dih4 125.000
dih5 241.000
dih6 183.000
dih7 310.000
dih8 62.000
```

When the z-matrix is used for optimization, it is possible to optimize only some coordinates and freeze the others. There are two labeling schemes that can be used (but not both at the same time):

- If there are variables with '!' in their name, they will not be optimized.
- If there are variables with '*' in their name, only these coordinates are optimized.